aboutsummaryrefslogtreecommitdiffstats
path: root/net/9p/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/9p/client.c')
-rw-r--r--net/9p/client.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/net/9p/client.c b/net/9p/client.c
index 4ff068e98f76..5e97118da3bf 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -1303,6 +1303,65 @@ error:
1303} 1303}
1304EXPORT_SYMBOL(p9_client_stat); 1304EXPORT_SYMBOL(p9_client_stat);
1305 1305
1306struct p9_stat_dotl *p9_client_getattr_dotl(struct p9_fid *fid,
1307 u64 request_mask)
1308{
1309 int err;
1310 struct p9_client *clnt;
1311 struct p9_stat_dotl *ret = kmalloc(sizeof(struct p9_stat_dotl),
1312 GFP_KERNEL);
1313 struct p9_req_t *req;
1314
1315 P9_DPRINTK(P9_DEBUG_9P, ">>> TGETATTR fid %d, request_mask %lld\n",
1316 fid->fid, request_mask);
1317
1318 if (!ret)
1319 return ERR_PTR(-ENOMEM);
1320
1321 err = 0;
1322 clnt = fid->clnt;
1323
1324 req = p9_client_rpc(clnt, P9_TGETATTR, "dq", fid->fid, request_mask);
1325 if (IS_ERR(req)) {
1326 err = PTR_ERR(req);
1327 goto error;
1328 }
1329
1330 err = p9pdu_readf(req->rc, clnt->proto_version, "A", ret);
1331 if (err) {
1332 p9pdu_dump(1, req->rc);
1333 p9_free_req(clnt, req);
1334 goto error;
1335 }
1336
1337 P9_DPRINTK(P9_DEBUG_9P,
1338 "<<< RGETATTR st_result_mask=%lld\n"
1339 "<<< qid=%x.%llx.%x\n"
1340 "<<< st_mode=%8.8x st_nlink=%llu\n"
1341 "<<< st_uid=%d st_gid=%d\n"
1342 "<<< st_rdev=%llx st_size=%llx st_blksize=%llu st_blocks=%llu\n"
1343 "<<< st_atime_sec=%lld st_atime_nsec=%lld\n"
1344 "<<< st_mtime_sec=%lld st_mtime_nsec=%lld\n"
1345 "<<< st_ctime_sec=%lld st_ctime_nsec=%lld\n"
1346 "<<< st_btime_sec=%lld st_btime_nsec=%lld\n"
1347 "<<< st_gen=%lld st_data_version=%lld",
1348 ret->st_result_mask, ret->qid.type, ret->qid.path,
1349 ret->qid.version, ret->st_mode, ret->st_nlink, ret->st_uid,
1350 ret->st_gid, ret->st_rdev, ret->st_size, ret->st_blksize,
1351 ret->st_blocks, ret->st_atime_sec, ret->st_atime_nsec,
1352 ret->st_mtime_sec, ret->st_mtime_nsec, ret->st_ctime_sec,
1353 ret->st_ctime_nsec, ret->st_btime_sec, ret->st_btime_nsec,
1354 ret->st_gen, ret->st_data_version);
1355
1356 p9_free_req(clnt, req);
1357 return ret;
1358
1359error:
1360 kfree(ret);
1361 return ERR_PTR(err);
1362}
1363EXPORT_SYMBOL(p9_client_getattr_dotl);
1364
1306static int p9_client_statsize(struct p9_wstat *wst, int proto_version) 1365static int p9_client_statsize(struct p9_wstat *wst, int proto_version)
1307{ 1366{
1308 int ret; 1367 int ret;