]> git.neil.brown.name Git - history.git/commitdiff
fix listxattr error path
authorSteve French <stevef@smfhome1.smfdom>
Sun, 13 Jun 2004 20:07:58 +0000 (15:07 -0500)
committerSteve French <stevef@smfhome.smfdom>
Sun, 13 Jun 2004 20:07:58 +0000 (15:07 -0500)
Signed-off-by: Steve French (sfrench@us.ibm.com)
fs/cifs/CHANGES
fs/cifs/README
fs/cifs/cifs_debug.c
fs/cifs/cifspdu.h
fs/cifs/xattr.c

index a48a4c9b82a13e16bfd61d38b6e8afb34eeac4ae..cae2bfb9991fbea4440585fc9e5c522b1e6c3e51 100644 (file)
@@ -1,7 +1,10 @@
 Version 1.18
 ------------
 Do not rename hardlinked files (since that should be a noop). Flush
-cached write behind data when reopening a file after session abend.
+cached write behind data when reopening a file after session abend,
+except when already in write. Grab per socket sem during reconnect 
+to avoid oops in sendmsg if overlapping with reconnect.
+
 
 Version 1.17
 ------------
index 8dba57f948e4d2e538f81484ca6b6019432bae06..09b49c804baddf7e34f8ca502de4413b1ecd287f 100644 (file)
@@ -97,7 +97,9 @@ Linux:
 
        case sensitive = yes
        delete readonly = yes 
+       ea support = yes
+
+Note that ea support is required for supporting Linux xattrs. 
 Some administrators also change the "map archive" and the "create mask" 
 parameters from their default values.  Creating special devices (mknod) remotely 
 may require specifying a mkdev function to Samba.  For more information on these 
@@ -268,11 +270,12 @@ Misc /proc/fs/cifs Flags and Debug Info
 =======================================
 Informational pseudo-files:
 DebugData              Displays information about active CIFS sessions
-                       as well as per share statistics (if CONFIG_CIFS_STATS
-                       is enabled in the kernel configuration).
+                       and shares.
 SimultaneousOps                Counter which holds maximum number of
                        simultaneous outstanding SMB/CIFS requests.
-Stats                  Lists summary resource usage information
+Stats                  Lists summary resource usage information as well as per
+                       share statistics, if CONFIG_CIFS_STATS in enabled
+                       in the kernel configuration.
 
 Configuration pseudo-files:
 MultiuserMount         If set to one, more than one CIFS session to 
index 3f5a81d4184bc413cd19d087a4fd79b1c2875b0e..2c3d9a8672163f89e221a667202cb8bb63e9b0cd 100644 (file)
@@ -190,26 +190,26 @@ cifs_stats_read(char *buf, char **beginBuffer, off_t offset,
        struct cifsTconInfo *tcon;
 
        length = sprintf(buf,
-                       "Currently Allocated structures\nCIFS Sessions: %d\n",
+                       "Resources in use\nCIFS Session: %d\n",
                        sesInfoAllocCount.counter);
        buf += length;
        item_length = 
-               sprintf(buf,"Shares (unique mount targets): %d\n",
+               sprintf(buf,"Share (unique mount targets): %d\n",
                        tconInfoAllocCount.counter);
        length += item_length;
        buf += item_length;      
        item_length = 
-               sprintf(buf,"Allocated SMB Request/Response Buffers: %d\n",
+               sprintf(buf,"SMB Request/Response Buffer: %d\n",
                        bufAllocCount.counter);
        length += item_length;
        buf += item_length;      
        item_length = 
-               sprintf(buf,"Active Operations (MIDs in use): %d\n",
+               sprintf(buf,"Operations (MIDs): %d\n",
                        midCount.counter);
        length += item_length;
        buf += item_length;
        item_length = sprintf(buf,
-               "%d session %d share reconnects\n",
+               "\n%d session %d share reconnects\n",
                tcpSesReconnectCount.counter,tconInfoReconnectCount.counter);
        length += item_length;
        buf += item_length;
index 104a563188a7d9d4f1e1d6f40e0c8e733302d9e7..c56fc7055c1bf1223cb566921579c1873b06ba4a 100644 (file)
@@ -1690,16 +1690,17 @@ struct gealist {
 };
 
 struct fea {
-       unsigned char fEA;
-       unsigned char cbName;
-       unsigned short cbValue;
+       unsigned char EA_flags;
+       __u8 name_len;
+       __u16 value_len;
        char szName[1];
+       /* optionally followed by value */
 };
 /* flags for _FEA.fEA */
 #define FEA_NEEDEA         0x80        /* need EA bit */
 
 struct fealist {
-       unsigned long cbList;
+       unsigned long list_len;
        struct fea list[1];
 };
 
index 1fc56d77e4630a792ddca75c34ea48e166c11d22..dd6a2c08cd73f01ae6cfbb858217a9f387200b2d 100644 (file)
@@ -57,7 +57,7 @@ ssize_t cifs_listxattr(struct dentry * direntry, char * ea_data, size_t ea_size)
        char * full_path;
        if(direntry == NULL)
                return -EIO;
-       if(direntry->d_inode)
+       if(direntry->d_inode == NULL)
                return -EIO;
        sb = direntry->d_inode->i_sb;
        if(sb == NULL)