Hi,

In open.c:do_truncate(), the call to notify_change() is protected by
the inode->i_sem, which seems to me useless, and thus can be removed.
BTW, I also removed the useless inode pointer and error local variables.

Comments ?
-Eric
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Eric PAIRE
Web  : http://www.ri.silicomp.com/~paire  | Groupe SILICOMP - Research Institute
Email: [EMAIL PROTECTED]         | 2, avenue de Vignate
Phone: +33 (0) 476 63 48 71               | F-38610 Gieres
Fax  : +33 (0) 476 51 05 32               | FRANCE

*** linux-2.4.0-test8/fs/open.c Sat Aug 12 00:16:21 2000
--- /tmp/open.c Fri Sep 15 13:34:21 2000
***************
*** 68,87 ****
  
  int do_truncate(struct dentry *dentry, loff_t length)
  {
-       struct inode *inode = dentry->d_inode;
-       int error;
        struct iattr newattrs;
  
        /* Not pretty: "inode->i_size" shouldn't really be signed. But it is. */
        if (length < 0)
                return -EINVAL;
  
-       down(&inode->i_sem);
        newattrs.ia_size = length;
        newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
!       error = notify_change(dentry, &newattrs);
!       up(&inode->i_sem);
!       return error;
  }
  
  static inline long do_sys_truncate(const char * path, loff_t length)
--- 68,82 ----
  
  int do_truncate(struct dentry *dentry, loff_t length)
  {
        struct iattr newattrs;
  
        /* Not pretty: "inode->i_size" shouldn't really be signed. But it is. */
        if (length < 0)
                return -EINVAL;
  
        newattrs.ia_size = length;
        newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
!       return notify_change(dentry, &newattrs);
  }
  
  static inline long do_sys_truncate(const char * path, loff_t length)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to