diff options
Diffstat (limited to 'net/9p/protocol.c')
-rw-r--r-- | net/9p/protocol.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/net/9p/protocol.c b/net/9p/protocol.c index b645c8263538..3e4f77695891 100644 --- a/net/9p/protocol.c +++ b/net/9p/protocol.c | |||
@@ -141,6 +141,7 @@ pdu_write_u(struct p9_fcall *pdu, const char __user *udata, size_t size) | |||
141 | D - data blob (int32_t size followed by void *, results are not freed) | 141 | D - data blob (int32_t size followed by void *, results are not freed) |
142 | T - array of strings (int16_t count, followed by strings) | 142 | T - array of strings (int16_t count, followed by strings) |
143 | R - array of qids (int16_t count, followed by qids) | 143 | R - array of qids (int16_t count, followed by qids) |
144 | A - stat for 9p2000.L (p9_stat_dotl) | ||
144 | ? - if optional = 1, continue parsing | 145 | ? - if optional = 1, continue parsing |
145 | */ | 146 | */ |
146 | 147 | ||
@@ -340,6 +341,33 @@ p9pdu_vreadf(struct p9_fcall *pdu, int proto_version, const char *fmt, | |||
340 | } | 341 | } |
341 | } | 342 | } |
342 | break; | 343 | break; |
344 | case 'A': { | ||
345 | struct p9_stat_dotl *stbuf = | ||
346 | va_arg(ap, struct p9_stat_dotl *); | ||
347 | |||
348 | memset(stbuf, 0, sizeof(struct p9_stat_dotl)); | ||
349 | errcode = | ||
350 | p9pdu_readf(pdu, proto_version, | ||
351 | "qQdddqqqqqqqqqqqqqqq", | ||
352 | &stbuf->st_result_mask, | ||
353 | &stbuf->qid, | ||
354 | &stbuf->st_mode, | ||
355 | &stbuf->st_uid, &stbuf->st_gid, | ||
356 | &stbuf->st_nlink, | ||
357 | &stbuf->st_rdev, &stbuf->st_size, | ||
358 | &stbuf->st_blksize, &stbuf->st_blocks, | ||
359 | &stbuf->st_atime_sec, | ||
360 | &stbuf->st_atime_nsec, | ||
361 | &stbuf->st_mtime_sec, | ||
362 | &stbuf->st_mtime_nsec, | ||
363 | &stbuf->st_ctime_sec, | ||
364 | &stbuf->st_ctime_nsec, | ||
365 | &stbuf->st_btime_sec, | ||
366 | &stbuf->st_btime_nsec, | ||
367 | &stbuf->st_gen, | ||
368 | &stbuf->st_data_version); | ||
369 | } | ||
370 | break; | ||
343 | case '?': | 371 | case '?': |
344 | if ((proto_version != p9_proto_2000u) && | 372 | if ((proto_version != p9_proto_2000u) && |
345 | (proto_version != p9_proto_2000L)) | 373 | (proto_version != p9_proto_2000L)) |