summaryrefslogtreecommitdiffstats
path: root/fs/orangefs/downcall.h
diff options
context:
space:
mode:
authorMartin Brandenburg <martin@omnibond.com>2017-04-25 21:37:59 +0200
committerMike Marshall <hubcap@omnibond.com>2017-04-26 20:33:00 +0200
commit382f4581e67f57209c7aa67e39f26ba076306a2e (patch)
tree9c67a6908a2a25df062e3860220ba9028cd57c86 /fs/orangefs/downcall.h
parentorangefs: do not set getattr_time on orangefs_lookup (diff)
downloadlinux-382f4581e67f57209c7aa67e39f26ba076306a2e.tar.xz
linux-382f4581e67f57209c7aa67e39f26ba076306a2e.zip
orangefs: rewrite readdir to fix several bugs
In the past, readdir assumed that the user buffer will be large enough that all entries from the server will fit. If this was not true, entries would be skipped. Since it works now, request 512 entries rather than 96 per server operation. Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
Diffstat (limited to 'fs/orangefs/downcall.h')
-rw-r--r--fs/orangefs/downcall.h16
1 files changed, 5 insertions, 11 deletions
diff --git a/fs/orangefs/downcall.h b/fs/orangefs/downcall.h
index 3b8923f8bf21..163001c95501 100644
--- a/fs/orangefs/downcall.h
+++ b/fs/orangefs/downcall.h
@@ -40,16 +40,6 @@ struct orangefs_mkdir_response {
struct orangefs_object_kref refn;
};
-/*
- * duplication of some system interface structures so that I don't have
- * to allocate extra memory
- */
-struct orangefs_dirent {
- char *d_name;
- int d_length;
- struct orangefs_khandle khandle;
-};
-
struct orangefs_statfs_response {
__s64 block_size;
__s64 blocks_total;
@@ -131,12 +121,16 @@ struct orangefs_downcall_s {
} resp;
};
+/*
+ * The readdir response comes in the trailer. It is followed by the
+ * directory entries as described in dir.c.
+ */
+
struct orangefs_readdir_response_s {
__u64 token;
__u64 directory_version;
__u32 __pad2;
__u32 orangefs_dirent_outcount;
- struct orangefs_dirent *dirent_array;
};
#endif /* __DOWNCALL_H */