Commit d139d7ff authored by Miklos Szeredi's avatar Miklos Szeredi Committed by Linus Torvalds
Browse files

VFS: allow filesystems to implement atomic open+truncate

Add a new attribute flag ATTR_OPEN, with the meaning: "truncation was
initiated by open() due to the O_TRUNC flag".

This way filesystems wanting to implement truncation within their ->open()
method can ignore such truncate requests.

This is a quick & dirty hack, but it comes for free.
Signed-off-by: default avatarMiklos Szeredi <>
Cc: Christoph Hellwig <>
Cc: Al Viro <>
Cc: Andreas Dilger <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent 49d4914f
......@@ -1659,8 +1659,10 @@ int may_open(struct nameidata *nd, int acc_mode, int flag)
error = locks_verify_locked(inode);
if (!error) {
error = do_truncate(dentry, 0, ATTR_MTIME|ATTR_CTIME, NULL);
error = do_truncate(dentry, 0,
if (error)
......@@ -330,6 +330,7 @@ typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
#define ATTR_KILL_SGID 4096
#define ATTR_FILE 8192
#define ATTR_KILL_PRIV 16384
#define ATTR_OPEN 32768 /* Truncating from open(O_TRUNC) */
* This is the Inode Attributes structure, used for notify_change(). It
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment