|
@@ -155,34 +155,39 @@ int cifs_get_inode_info_unix(struct inode **pinode,
|
|
}
|
|
}
|
|
|
|
|
|
if (num_of_bytes < end_of_file)
|
|
if (num_of_bytes < end_of_file)
|
|
- cFYI(1, ("allocation size less than end of file "));
|
|
|
|
|
|
+ cFYI(1, ("allocation size less than end of file"));
|
|
cFYI(1,
|
|
cFYI(1,
|
|
("Size %ld and blocks %ld",
|
|
("Size %ld and blocks %ld",
|
|
(unsigned long) inode->i_size, inode->i_blocks));
|
|
(unsigned long) inode->i_size, inode->i_blocks));
|
|
if (S_ISREG(inode->i_mode)) {
|
|
if (S_ISREG(inode->i_mode)) {
|
|
- cFYI(1, (" File inode "));
|
|
|
|
|
|
+ cFYI(1, ("File inode"));
|
|
inode->i_op = &cifs_file_inode_ops;
|
|
inode->i_op = &cifs_file_inode_ops;
|
|
- if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO)
|
|
|
|
- inode->i_fop = &cifs_file_direct_ops;
|
|
|
|
- else
|
|
|
|
|
|
+ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO) {
|
|
|
|
+ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
|
|
|
|
+ inode->i_fop =
|
|
|
|
+ &cifs_file_direct_nobrl_ops;
|
|
|
|
+ else
|
|
|
|
+ inode->i_fop = &cifs_file_direct_ops;
|
|
|
|
+ } else if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
|
|
|
|
+ inode->i_fop = &cifs_file_nobrl_ops;
|
|
|
|
+ else /* not direct, send byte range locks */
|
|
inode->i_fop = &cifs_file_ops;
|
|
inode->i_fop = &cifs_file_ops;
|
|
- if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
|
|
|
|
- inode->i_fop->lock = NULL;
|
|
|
|
|
|
+
|
|
inode->i_data.a_ops = &cifs_addr_ops;
|
|
inode->i_data.a_ops = &cifs_addr_ops;
|
|
/* check if server can support readpages */
|
|
/* check if server can support readpages */
|
|
if(pTcon->ses->server->maxBuf <
|
|
if(pTcon->ses->server->maxBuf <
|
|
4096 + MAX_CIFS_HDR_SIZE)
|
|
4096 + MAX_CIFS_HDR_SIZE)
|
|
inode->i_data.a_ops->readpages = NULL;
|
|
inode->i_data.a_ops->readpages = NULL;
|
|
} else if (S_ISDIR(inode->i_mode)) {
|
|
} else if (S_ISDIR(inode->i_mode)) {
|
|
- cFYI(1, (" Directory inode"));
|
|
|
|
|
|
+ cFYI(1, ("Directory inode"));
|
|
inode->i_op = &cifs_dir_inode_ops;
|
|
inode->i_op = &cifs_dir_inode_ops;
|
|
inode->i_fop = &cifs_dir_ops;
|
|
inode->i_fop = &cifs_dir_ops;
|
|
} else if (S_ISLNK(inode->i_mode)) {
|
|
} else if (S_ISLNK(inode->i_mode)) {
|
|
- cFYI(1, (" Symbolic Link inode "));
|
|
|
|
|
|
+ cFYI(1, ("Symbolic Link inode"));
|
|
inode->i_op = &cifs_symlink_inode_ops;
|
|
inode->i_op = &cifs_symlink_inode_ops;
|
|
/* tmp_inode->i_fop = */ /* do not need to set to anything */
|
|
/* tmp_inode->i_fop = */ /* do not need to set to anything */
|
|
} else {
|
|
} else {
|
|
- cFYI(1, (" Init special inode "));
|
|
|
|
|
|
+ cFYI(1, ("Init special inode"));
|
|
init_special_inode(inode, inode->i_mode,
|
|
init_special_inode(inode, inode->i_mode,
|
|
inode->i_rdev);
|
|
inode->i_rdev);
|
|
}
|
|
}
|
|
@@ -379,12 +384,17 @@ int cifs_get_inode_info(struct inode **pinode,
|
|
if (S_ISREG(inode->i_mode)) {
|
|
if (S_ISREG(inode->i_mode)) {
|
|
cFYI(1, (" File inode "));
|
|
cFYI(1, (" File inode "));
|
|
inode->i_op = &cifs_file_inode_ops;
|
|
inode->i_op = &cifs_file_inode_ops;
|
|
- if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO)
|
|
|
|
- inode->i_fop = &cifs_file_direct_ops;
|
|
|
|
- else
|
|
|
|
|
|
+ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO) {
|
|
|
|
+ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
|
|
|
|
+ inode->i_fop =
|
|
|
|
+ &cifs_file_direct_nobrl_ops;
|
|
|
|
+ else
|
|
|
|
+ inode->i_fop = &cifs_file_direct_ops;
|
|
|
|
+ } else if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
|
|
|
|
+ inode->i_fop = &cifs_file_nobrl_ops;
|
|
|
|
+ else /* not direct, send byte range locks */
|
|
inode->i_fop = &cifs_file_ops;
|
|
inode->i_fop = &cifs_file_ops;
|
|
- if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
|
|
|
|
- inode->i_fop->lock = NULL;
|
|
|
|
|
|
+
|
|
inode->i_data.a_ops = &cifs_addr_ops;
|
|
inode->i_data.a_ops = &cifs_addr_ops;
|
|
if(pTcon->ses->server->maxBuf <
|
|
if(pTcon->ses->server->maxBuf <
|
|
4096 + MAX_CIFS_HDR_SIZE)
|
|
4096 + MAX_CIFS_HDR_SIZE)
|