Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
add support for build HEAD without vfs_intent patches.
[fs/lustre-release.git]
/
lustre
/
llite
/
symlink.c
diff --git
a/lustre/llite/symlink.c
b/lustre/llite/symlink.c
index
683f36f
..
7c9c1d3
100644
(file)
--- a/
lustre/llite/symlink.c
+++ b/
lustre/llite/symlink.c
@@
-34,9
+34,9
@@
static int ll_readlink_internal(struct inode *inode,
{
struct ll_inode_info *lli = ll_i2info(inode);
struct ll_sb_info *sbi = ll_i2sbi(inode);
-
struct ll_fid fid
;
- struct md
s
_body *body;
-
int rc, symlen = inode->i_size + 1
;
+
int rc, symlen = i_size_read(inode) + 1
;
+ struct md
t
_body *body;
+
struct obd_capa *oc
;
ENTRY;
*request = NULL;
@@
-47,9
+47,10
@@
static int ll_readlink_internal(struct inode *inode,
RETURN(0);
}
- ll_inode2fid(&fid, inode);
- rc = mdc_getattr(sbi->ll_mdc_exp, &fid,
- OBD_MD_LINKNAME, symlen, request);
+ oc = ll_mdscapa_get(inode);
+ rc = md_getattr(sbi->ll_md_exp, ll_inode2fid(inode), oc,
+ OBD_MD_LINKNAME, symlen, request);
+ capa_put(oc);
if (rc) {
if (rc != -ENOENT)
CERROR("inode %lu: rc = %d\n", inode->i_ino, rc);
@@
-59,7
+60,7
@@
static int ll_readlink_internal(struct inode *inode,
body = lustre_msg_buf((*request)->rq_repmsg, REPLY_REC_OFF,
sizeof(*body));
LASSERT(body != NULL);
- LASSERT
_REPSWABBED(*request, REPLY_REC_OFF
);
+ LASSERT
(lustre_rep_swabbed(*request, REPLY_REC_OFF)
);
if ((body->valid & OBD_MD_LINKNAME) == 0) {
CERROR("OBD_MD_LINKNAME not set on reply\n");
@@
-110,7
+111,7
@@
static int ll_readlink(struct dentry *dentry, char *buffer, int buflen)
CDEBUG(D_VFSTRACE, "VFS Op\n");
/* on symlinks lli_open_sem protects lli_symlink_name allocation/data */
- down(&lli->lli_
open
_sem);
+ down(&lli->lli_
size
_sem);
rc = ll_readlink_internal(inode, &request, &symname);
if (rc)
GOTO(out, rc);
@@
-118,7
+119,7
@@
static int ll_readlink(struct dentry *dentry, char *buffer, int buflen)
rc = vfs_readlink(dentry, buffer, buflen, symname);
ptlrpc_req_finished(request);
out:
- up(&lli->lli_
open
_sem);
+ up(&lli->lli_
size
_sem);
RETURN(rc);
}
@@
-128,11
+129,12
@@
static int ll_readlink(struct dentry *dentry, char *buffer, int buflen)
# define LL_FOLLOW_LINK_RETURN_TYPE int
#endif
-static LL_FOLLOW_LINK_RETURN_TYPE ll_follow_link(struct dentry *dentry, struct nameidata *nd)
+static LL_FOLLOW_LINK_RETURN_TYPE ll_follow_link(struct dentry *dentry,
+ struct nameidata *nd)
{
struct inode *inode = dentry->d_inode;
struct ll_inode_info *lli = ll_i2info(inode);
-#ifdef
LUSTRE_KERNEL_VERSION
+#ifdef
HAVE_VFS_INTENT_PATCHES
struct lookup_intent *it = ll_nd2it(nd);
#endif
struct ptlrpc_request *request;
@@
-140,7
+142,7
@@
static LL_FOLLOW_LINK_RETURN_TYPE ll_follow_link(struct dentry *dentry, struct n
char *symname;
ENTRY;
-#ifdef
LUSTRE_KERNEL_VERSION
+#ifdef
HAVE_VFS_INTENT_PATCHES
if (it != NULL) {
int op = it->it_op;
int mode = it->it_create_mode;
@@
-152,9
+154,9
@@
static LL_FOLLOW_LINK_RETURN_TYPE ll_follow_link(struct dentry *dentry, struct n
#endif
CDEBUG(D_VFSTRACE, "VFS Op\n");
- down(&lli->lli_
open
_sem);
+ down(&lli->lli_
size
_sem);
rc = ll_readlink_internal(inode, &request, &symname);
- up(&lli->lli_
open
_sem);
+ up(&lli->lli_
size
_sem);
if (rc) {
path_release(nd); /* Kernel assumes that ->follow_link()
releases nameidata on error */
@@
-164,21
+166,21
@@
static LL_FOLLOW_LINK_RETURN_TYPE ll_follow_link(struct dentry *dentry, struct n
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,8))
rc = vfs_follow_link(nd, symname);
#else
-#
ifdef HAVE_COOKIE_FOLLOW_LINK
+#ifdef HAVE_COOKIE_FOLLOW_LINK
nd_set_link(nd, symname);
/* @symname may contain a pointer to the request message buffer,
we delay request releasing until ll_put_link then. */
RETURN(request);
-#
else
+#else
if (request != NULL) {
/* falling back to recursive follow link if the request
* needs to be cleaned up still. */
-
rc = vfs_follow_link(nd, symname);
+ rc = vfs_follow_link(nd, symname);
GOTO(out, rc);
}
nd_set_link(nd, symname);
RETURN(0);
-#
endif
+#endif
#endif
out:
ptlrpc_req_finished(request);
@@
-199,18
+201,14
@@
static void ll_put_link(struct dentry *dentry, struct nameidata *nd, void *cooki
struct inode_operations ll_fast_symlink_inode_operations = {
.readlink = ll_readlink,
.setattr = ll_setattr,
-#ifdef
LUSTRE_KERNEL_VERSION
+#ifdef
HAVE_VFS_INTENT_PATCHES
.setattr_raw = ll_setattr_raw,
#endif
.follow_link = ll_follow_link,
#ifdef HAVE_COOKIE_FOLLOW_LINK
.put_link = ll_put_link,
#endif
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
- .revalidate_it = ll_inode_revalidate_it,
-#else
.getattr = ll_getattr,
-#endif
.permission = ll_inode_permission,
.setxattr = ll_setxattr,
.getxattr = ll_getxattr,