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
b=20101 lfs getstripe -d test for sanity 27w
[fs/lustre-release.git]
/
lustre
/
liblustre
/
dir.c
diff --git
a/lustre/liblustre/dir.c
b/lustre/liblustre/dir.c
index
80b410a
..
ce812de
100644
(file)
--- a/
lustre/liblustre/dir.c
+++ b/
lustre/liblustre/dir.c
@@
-16,8
+16,8
@@
* in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU General Public License
* in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
[sun.com URL with a
- *
copy of GPLv2].
+ * version 2 along with this program; If not, see
+ *
http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
@@
-61,8
+61,6
@@
#include <file.h>
#endif
#include <file.h>
#endif
-#undef LIST_HEAD
-
#ifdef HAVE_LINUX_UNISTD_H
#include <linux/unistd.h>
#elif defined(HAVE_UNISTD_H)
#ifdef HAVE_LINUX_UNISTD_H
#include <linux/unistd.h>
#elif defined(HAVE_UNISTD_H)
@@
-94,13
+92,14
@@
static int llu_dir_do_readpage(struct inode *inode, struct page *page)
&lli->lli_fid, LDLM_IBITS, &policy, LCK_CR, &lockh);
if (!rc) {
struct ldlm_enqueue_info einfo = {LDLM_IBITS, LCK_CR,
&lli->lli_fid, LDLM_IBITS, &policy, LCK_CR, &lockh);
if (!rc) {
struct ldlm_enqueue_info einfo = {LDLM_IBITS, LCK_CR,
- llu_md_blocking_ast, ldlm_completion_ast, NULL, inode};
+ llu_md_blocking_ast, ldlm_completion_ast, NULL, NULL,
+ inode};
llu_prep_md_op_data(&op_data, inode, NULL, NULL, 0, 0,
LUSTRE_OPC_ANY);
rc = md_enqueue(sbi->ll_md_exp, &einfo, &it,
llu_prep_md_op_data(&op_data, inode, NULL, NULL, 0, 0,
LUSTRE_OPC_ANY);
rc = md_enqueue(sbi->ll_md_exp, &einfo, &it,
- &op_data, &lockh, NULL, 0,
+ &op_data, &lockh, NULL, 0,
NULL,
LDLM_FL_CANCEL_ON_BLOCK);
request = (struct ptlrpc_request *)it.d.lustre.it_data;
if (request)
LDLM_FL_CANCEL_ON_BLOCK);
request = (struct ptlrpc_request *)it.d.lustre.it_data;
if (request)
@@
-131,8
+130,8
@@
static int llu_dir_do_readpage(struct inode *inode, struct page *page)
return rc;
}
return rc;
}
-static cfs_page_t *llu_dir_read_page(struct inode *ino, __u
32
hash,
-
int exact, struct ll_dir_chain *chain)
+static cfs_page_t *llu_dir_read_page(struct inode *ino, __u
64
hash,
+ int exact, struct ll_dir_chain *chain)
{
cfs_page_t *page;
int rc;
{
cfs_page_t *page;
int rc;
@@
-193,12
+192,12
@@
static int filldir(char *buf, int buflen,
return 0;
}
return 0;
}
-/*
+/*
* TODO: much of the code here is similar/identical to llite ll_readdir().
* These code can be factored out and shared in a common module.
*/
* TODO: much of the code here is similar/identical to llite ll_readdir().
* These code can be factored out and shared in a common module.
*/
-ssize_t llu_iop_filldirentries(struct inode *dir, _SYSIO_OFF_T *basep,
+ssize_t llu_iop_filldirentries(struct inode *dir, _SYSIO_OFF_T *basep,
char *buf, size_t nbytes)
{
struct llu_inode_info *lli = llu_i2info(dir);
char *buf, size_t nbytes)
{
struct llu_inode_info *lli = llu_i2info(dir);
@@
-210,6
+209,7
@@
ssize_t llu_iop_filldirentries(struct inode *dir, _SYSIO_OFF_T *basep,
int rc;
int done;
int shift;
int rc;
int done;
int shift;
+ __u16 type;
ENTRY;
liblustre_wait_event(0);
ENTRY;
liblustre_wait_event(0);
@@
-236,9
+236,9
@@
ssize_t llu_iop_filldirentries(struct inode *dir, _SYSIO_OFF_T *basep,
struct lu_dirent *ent;
if (!IS_ERR(page)) {
struct lu_dirent *ent;
if (!IS_ERR(page)) {
- /*
+ /*
* If page is empty (end of directoryis reached),
* If page is empty (end of directoryis reached),
- * use this value.
+ * use this value.
*/
__u64 hash = DIR_END_OFF;
__u64 next;
*/
__u64 hash = DIR_END_OFF;
__u64 next;
@@
-270,10
+270,10
@@
ssize_t llu_iop_filldirentries(struct inode *dir, _SYSIO_OFF_T *basep,
fid = ent->lde_fid;
name = ent->lde_name;
fid_le_to_cpu(&fid, &fid);
fid = ent->lde_fid;
name = ent->lde_name;
fid_le_to_cpu(&fid, &fid);
- ino =
llu_fid_build_ino(llu_i2sbi(dir),
&fid);
-
+ ino =
cl_fid_build_ino(
&fid);
+ type = ll_dirent_type_get(ent);
done = filldir(buf, nbytes, name, namelen,
done = filldir(buf, nbytes, name, namelen,
- (loff_t)hash, ino,
DT_UNKNOWN
,
+ (loff_t)hash, ino,
type
,
&filled);
}
next = le64_to_cpu(dp->ldp_hash_end);
&filled);
}
next = le64_to_cpu(dp->ldp_hash_end);
@@
-308,7
+308,7
@@
ssize_t llu_iop_filldirentries(struct inode *dir, _SYSIO_OFF_T *basep,
PFID(&lli->lli_fid), (unsigned long)pos, rc);
}
}
PFID(&lli->lli_fid), (unsigned long)pos, rc);
}
}
- lli->lli_dir_pos = (loff_t)
(__s32)
pos;
+ lli->lli_dir_pos = (loff_t)pos;
*basep = lli->lli_dir_pos;
out:
ll_dir_chain_fini(&chain);
*basep = lli->lli_dir_pos;
out:
ll_dir_chain_fini(&chain);