@@ -1534,9 +1534,16 @@ int cifs_file_set_size(const unsigned int xid, struct dentry *dentry,
15341534#define CIFS_CACHE_RW_FLG (CIFS_CACHE_READ_FLG | CIFS_CACHE_WRITE_FLG)
15351535#define CIFS_CACHE_RHW_FLG (CIFS_CACHE_RW_FLG | CIFS_CACHE_HANDLE_FLG)
15361536
1537- /*
1538- * One of these for each file inode
1539- */
1537+ enum cifs_inode_flags {
1538+ CIFS_INODE_PENDING_OPLOCK_BREAK , /* oplock break in progress */
1539+ CIFS_INODE_PENDING_WRITERS , /* Writes in progress */
1540+ CIFS_INODE_FLAG_UNUSED , /* Unused flag */
1541+ CIFS_INO_DELETE_PENDING , /* delete pending on server */
1542+ CIFS_INO_INVALID_MAPPING , /* pagecache is invalid */
1543+ CIFS_INO_LOCK , /* lock bit for synchronization */
1544+ CIFS_INO_TMPFILE , /* for O_TMPFILE inodes */
1545+ CIFS_INO_CLOSE_ON_LOCK , /* Not to defer the close when lock is set */
1546+ };
15401547
15411548struct cifsInodeInfo {
15421549 struct netfs_inode netfs ; /* Netfslib context and vfs inode */
@@ -1554,13 +1561,6 @@ struct cifsInodeInfo {
15541561 __u32 cifsAttrs ; /* e.g. DOS archive bit, sparse, compressed, system */
15551562 unsigned int oplock ; /* oplock/lease level we have */
15561563 __u16 epoch ; /* used to track lease state changes */
1557- #define CIFS_INODE_PENDING_OPLOCK_BREAK (0) /* oplock break in progress */
1558- #define CIFS_INODE_PENDING_WRITERS (1) /* Writes in progress */
1559- #define CIFS_INODE_FLAG_UNUSED (2) /* Unused flag */
1560- #define CIFS_INO_DELETE_PENDING (3) /* delete pending on server */
1561- #define CIFS_INO_INVALID_MAPPING (4) /* pagecache is invalid */
1562- #define CIFS_INO_LOCK (5) /* lock bit for synchronization */
1563- #define CIFS_INO_CLOSE_ON_LOCK (7) /* Not to defer the close when lock is set */
15641564 unsigned long flags ;
15651565 spinlock_t writers_lock ;
15661566 unsigned int writers ; /* Number of writers on this inode */
@@ -2259,6 +2259,7 @@ struct smb2_compound_vars {
22592259 struct kvec qi_iov ;
22602260 struct kvec io_iov [SMB2_IOCTL_IOV_SIZE ];
22612261 struct kvec si_iov [SMB2_SET_INFO_IOV_SIZE ];
2262+ struct kvec hl_iov [SMB2_SET_INFO_IOV_SIZE ];
22622263 struct kvec unlink_iov [SMB2_SET_INFO_IOV_SIZE ];
22632264 struct kvec rename_iov [SMB2_SET_INFO_IOV_SIZE ];
22642265 struct kvec close_iov ;
@@ -2383,6 +2384,8 @@ static inline int cifs_open_create_options(unsigned int oflags, int opts)
23832384 opts |= CREATE_WRITE_THROUGH ;
23842385 if (oflags & O_DIRECT )
23852386 opts |= CREATE_NO_BUFFER ;
2387+ if (oflags & O_TMPFILE )
2388+ opts |= CREATE_DELETE_ON_CLOSE ;
23862389 return opts ;
23872390}
23882391
0 commit comments