Re: [patch 04/14] hpfs: dont call notify_change

From: Miklos Szeredi
Date: Wed Jul 23 2008 - 13:03:49 EST


On Wed, 23 Jul 2008, Mikulas Patocka wrote:
> What about down_write on i_alloc_sem --- notify change takes that and your
> patch bypasses that.

i_alloc_sem is only relevant if filesystem uses blockdev_direct_IO()
and friends. It is not used for anything else, so for hpfs there's no
need to surround take that lock.

Thanks,
Miklos

> > From: Miklos Szeredi <mszeredi@xxxxxxx>
> >
> > hpfs_unlink() calls notify_change() to truncate the file before
> > deleting. Replace with explicit call to hpfs_notify_change().
> >
> > This is equivalent, except that:
> > - security_inode_setattr() is not called before hpfs_notify_change()
> > - fsnotify_change() is not called after hpfs_notify_change()
> >
> > The truncation is just an implementation detail, so both the security
> > check and the notification are unnecessary.
> >
> > Possibly even the ctime modification is wrong?
> >
> > Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxx>
> > CC: Mikulas Patocka <mikulas@xxxxxxxxxxxxxxxxxxxxxxxx>
> > ---
> > fs/hpfs/namei.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > Index: linux-2.6/fs/hpfs/namei.c
> > ===================================================================
> > --- linux-2.6.orig/fs/hpfs/namei.c 2008-07-23 00:10:13.000000000 +0200
> > +++ linux-2.6/fs/hpfs/namei.c 2008-07-23 00:10:22.000000000 +0200
> > @@ -426,7 +426,8 @@ again:
> > /*printk("HPFS: truncating file before delete.\n");*/
> > newattrs.ia_size = 0;
> > newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
> > - err = notify_change(dentry, &newattrs);
> > + newattrs.ia_ctime = current_fs_time(inode->i_sb);
> > + err = hpfs_notify_change(dentry, &newattrs);
> > put_write_access(inode);
> > if (!err)
> > goto again;
> >
> > --
> >
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/