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
------------
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
=======================================
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
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;
};
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];
};
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)