Skip to content

Commit 31fd5cf

Browse files
committed
MGM: extract 'app' name for fuse applications and it to the MD stat accounting calls
1 parent 76750ad commit 31fd5cf

File tree

1 file changed

+38
-37
lines changed

1 file changed

+38
-37
lines changed

mgm/XrdMgmOfsFile.cc

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
643643
if (app_name == "fuse" || app_name == "xrootdfs" ||
644644
app_name.find("fuse::") == 0) {
645645
isFuse = true;
646+
vid.app = app_name;
646647
} else if (app_name == "touch") {
647648
isTouch = true;
648649
isFuse = true;
@@ -850,7 +851,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
850851
" the requested permissions for that operation (1)", path);
851852
}
852853

853-
gOFS->MgmStats.Add("OpenProc", vid.uid, vid.gid, 1);
854+
gOFS->MgmStats.Add("OpenProc", vid.uid, vid.gid, 1, vid.app);
854855

855856
if (!ProcInterface::Authorize(path, ininfo, vid, client)) {
856857
return Emsg(epname, error, EPERM, "execute proc command - you don't have "
@@ -888,7 +889,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
888889
}
889890
}
890891

891-
gOFS->MgmStats.Add("Open", vid.uid, vid.gid, 1);
892+
gOFS->MgmStats.Add("Open", vid.uid, vid.gid, 1, vid.app);
892893
bool dotFxid = spath.beginswith("/.fxid:");
893894

894895
if (dotFxid) {
@@ -949,7 +950,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
949950
ec = gOFS->_mkdir(cPath.GetParentPath(), Mode, error, vid, ininfo);
950951

951952
if (ec) {
952-
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1);
953+
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1, vid.app);
953954
return SFS_ERROR;
954955
}
955956
}
@@ -1055,7 +1056,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
10551056

10561057
// check for O_EXCL here to save some time
10571058
if (open_flags & O_EXCL) {
1058-
gOFS->MgmStats.Add("OpenFailedExists", vid.uid, vid.gid, 1);
1059+
gOFS->MgmStats.Add("OpenFailedExists", vid.uid, vid.gid, 1, vid.app);
10591060
return Emsg(epname, error, EEXIST, "create file - (O_EXCL)", path);
10601061
}
10611062
}
@@ -1135,7 +1136,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
11351136
}
11361137

11371138
rcode = SFS_REDIRECT;
1138-
gOFS->MgmStats.Add("RedirectENOENT", vid.uid, vid.gid, 1);
1139+
gOFS->MgmStats.Add("RedirectENOENT", vid.uid, vid.gid, 1, vid.app);
11391140
XrdOucString predirectionhost = redirectionhost.c_str();
11401141
eos::common::StringConversion::MaskTag(predirectionhost, "cap.msg");
11411142
eos::common::StringConversion::MaskTag(predirectionhost, "cap.sym");
@@ -1148,7 +1149,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
11481149

11491150
// put back original errno
11501151
errno = save_errno;
1151-
gOFS->MgmStats.Add("OpenFailedENOENT", vid.uid, vid.gid, 1);
1152+
gOFS->MgmStats.Add("OpenFailedENOENT", vid.uid, vid.gid, 1, vid.app);
11521153
return Emsg(epname, error, errno, "open file", path);
11531154
}
11541155

@@ -1182,7 +1183,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
11821183
vid.uid, vid.sudoer, isRW, acl.CanNotRead(), acl.CanNotWrite(),
11831184
acl.CanNotUpdate());
11841185
errno = EPERM;
1185-
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1);
1186+
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1, vid.app);
11861187
return Emsg(epname, error, errno, "open file - forbidden by ACL", path);
11871188
}
11881189

@@ -1195,7 +1196,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
11951196

11961197
if (acl.CanNotUpdate() || (acl.CanNotWrite() && !acl.CanUpdate())) {
11971198
// the ACL has !u set - we don't allow to do file updates
1198-
gOFS->MgmStats.Add("OpenFailedNoUpdate", vid.uid, vid.gid, 1);
1199+
gOFS->MgmStats.Add("OpenFailedNoUpdate", vid.uid, vid.gid, 1, vid.app);
11991200
return Emsg(epname, error, EPERM, "update file - fobidden by ACL",
12001201
path);
12011202
}
@@ -1222,7 +1223,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
12221223
if (isRW && !acl.IsMutable() && vid.uid && !vid.sudoer) {
12231224
// immutable directory
12241225
errno = EPERM;
1225-
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1);
1226+
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1, vid.app);
12261227
return Emsg(epname, error, errno, "open file - directory immutable", path);
12271228
}
12281229

@@ -1244,7 +1245,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
12441245
if (!((vid.uid == DAEMONUID) && (isPioReconstruct))) {
12451246
// we don't apply this permission check for reconstruction jobs issued via the daemon account
12461247
errno = EPERM;
1247-
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1);
1248+
gOFS->MgmStats.Add("OpenFailedPermission", vid.uid, vid.gid, 1, vid.app);
12481249
return Emsg(epname, error, errno, "open file", path);
12491250
}
12501251
}
@@ -1344,7 +1345,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
13441345
if (!getenv("EOS_ALLOW_RAIN_RWM") && isRewrite && (vid.uid > 3) &&
13451346
(fmdsize != 0) && (LayoutId::IsRain(fmdlid))) {
13461347
// Unpriviledged users are not allowed to open RAIN files for update
1347-
gOFS->MgmStats.Add("OpenFailedNoUpdate", vid.uid, vid.gid, 1);
1348+
gOFS->MgmStats.Add("OpenFailedNoUpdate", vid.uid, vid.gid, 1, vid.app);
13481349
return Emsg(epname, error, EPERM, "update RAIN layout file - "
13491350
"you have to be a priviledged user for updates");
13501351
}
@@ -1353,7 +1354,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
13531354
// check if this directory is write-once for the mapped user
13541355
if (acl.HasAcl()) {
13551356
if (acl.CanWriteOnce()) {
1356-
gOFS->MgmStats.Add("OpenFailedNoUpdate", vid.uid, vid.gid, 1);
1357+
gOFS->MgmStats.Add("OpenFailedNoUpdate", vid.uid, vid.gid, 1, vid.app);
13571358
// this is a write once user
13581359
return Emsg(epname, error, EEXIST,
13591360
"overwrite existing file - you are write-once user");
@@ -1390,15 +1391,15 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
13901391
eos_info("%s", "msg=\"keep attached to existing fmd in chunked upload\"");
13911392
}
13921393

1393-
gOFS->MgmStats.Add("OpenWriteTruncate", vid.uid, vid.gid, 1);
1394+
gOFS->MgmStats.Add("OpenWriteTruncate", vid.uid, vid.gid, 1, vid.app);
13941395
} else {
13951396
if (isInjection && !fmd) {
13961397
errno = ENOENT;
13971398
return Emsg(epname, error, errno, "inject into a non-existing file", path);
13981399
}
13991400

14001401
if (!(fmd) && ((open_flags & O_CREAT))) {
1401-
gOFS->MgmStats.Add("OpenWriteCreate", vid.uid, vid.gid, 1);
1402+
gOFS->MgmStats.Add("OpenWriteCreate", vid.uid, vid.gid, 1, vid.app);
14021403
} else {
14031404
if (acl.HasAcl()) {
14041405
if (acl.CanWriteOnce()) {
@@ -1413,7 +1414,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
14131414
}
14141415
}
14151416

1416-
gOFS->MgmStats.Add("OpenWrite", vid.uid, vid.gid, 1);
1417+
gOFS->MgmStats.Add("OpenWrite", vid.uid, vid.gid, 1, vid.app);
14171418
}
14181419
}
14191420

@@ -1456,7 +1457,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
14561457
}
14571458

14581459
if (fmd) {
1459-
gOFS->MgmStats.Add("OpenFailedExists", vid.uid, vid.gid, 1);
1460+
gOFS->MgmStats.Add("OpenFailedExists", vid.uid, vid.gid, 1, vid.app);
14601461
return Emsg(epname, error, EEXIST, "create file - (O_EXCL)", path);
14611462
}
14621463
}
@@ -1561,7 +1562,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
15611562

15621563
if (!fmd) {
15631564
// creation failed
1564-
gOFS->MgmStats.Add("OpenFailedCreate", vid.uid, vid.gid, 1);
1565+
gOFS->MgmStats.Add("OpenFailedCreate", vid.uid, vid.gid, 1, vid.app);
15651566
return Emsg(epname, error, errno, "create file", path);
15661567
}
15671568

@@ -1571,7 +1572,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
15711572
} else {
15721573
// we attached to an existing file
15731574
if (open_flags & O_EXCL) {
1574-
gOFS->MgmStats.Add("OpenFailedExists", vid.uid, vid.gid, 1);
1575+
gOFS->MgmStats.Add("OpenFailedExists", vid.uid, vid.gid, 1, vid.app);
15751576
return Emsg(epname, error, EEXIST, "create file (O_EXCL)", path);
15761577
}
15771578
}
@@ -1603,11 +1604,11 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
16031604
}
16041605

16051606
rcode = SFS_REDIRECT;
1606-
gOFS->MgmStats.Add("RedirectENOENT", vid.uid, vid.gid, 1);
1607+
gOFS->MgmStats.Add("RedirectENOENT", vid.uid, vid.gid, 1, vid.app);
16071608
return rcode;
16081609
}
16091610

1610-
gOFS->MgmStats.Add("OpenFailedENOENT", vid.uid, vid.gid, 1);
1611+
gOFS->MgmStats.Add("OpenFailedENOENT", vid.uid, vid.gid, 1, vid.app);
16111612
return Emsg(epname, error, errno, "open file", path);
16121613
}
16131614

@@ -1657,9 +1658,9 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
16571658
}
16581659

16591660
if (isSharedFile) {
1660-
gOFS->MgmStats.Add("OpenShared", vid.uid, vid.gid, 1);
1661+
gOFS->MgmStats.Add("OpenShared", vid.uid, vid.gid, 1, vid.app);
16611662
} else {
1662-
gOFS->MgmStats.Add("OpenRead", vid.uid, vid.gid, 1);
1663+
gOFS->MgmStats.Add("OpenRead", vid.uid, vid.gid, 1, vid.app);
16631664
}
16641665

16651666
// possibly apply an access conversion policy
@@ -1771,7 +1772,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
17711772
std::string localhost = "localhost";
17721773

17731774
if (gOFS->Tried(url, localhost, "*")) {
1774-
gOFS->MgmStats.Add("OpenFailedRedirectLocal", vid.uid, vid.gid, 1);
1775+
gOFS->MgmStats.Add("OpenFailedRedirectLocal", vid.uid, vid.gid, 1, vid.app);
17751776
eos_info("msg=\"local-redirect disabled - forwarding to FST\" path=\"%s\" info=\"%s\"",
17761777
path, ininfo);
17771778
} else {
@@ -1813,7 +1814,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
18131814
}
18141815

18151816
rcode = SFS_REDIRECT;
1816-
gOFS->MgmStats.Add("OpenRedirectLocal", vid.uid, vid.gid, 1);
1817+
gOFS->MgmStats.Add("OpenRedirectLocal", vid.uid, vid.gid, 1, vid.app);
18171818
eos_info("local-redirect=\"%s\"", redirectionhost.c_str());
18181819
return rcode;
18191820
}
@@ -1854,7 +1855,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
18541855
std::string errmsg = e.getMessage().str();
18551856
eos_debug("msg=\"exception\" ec=%d emsg=\"%s\"\n",
18561857
e.getErrno(), e.getMessage().str().c_str());
1857-
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1);
1858+
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1, vid.app);
18581859
return Emsg(epname, error, errno, "open file and update atime for reading",
18591860
errmsg.c_str());
18601861
}
@@ -2017,7 +2018,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
20172018
std::string errmsg = e.getMessage().str();
20182019
eos_debug("msg=\"exception\" ec=%d emsg=\"%s\"\n",
20192020
e.getErrno(), e.getMessage().str().c_str());
2020-
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1);
2021+
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1, vid.app);
20212022
return Emsg(epname, error, errno, "open file", errmsg.c_str());
20222023
}
20232024
}
@@ -2230,7 +2231,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
22302231
eos_err("msg =\"no valid placement found with FlatScheduler\" ret=%d, err_msg=%s",
22312232
ret.ret_code, ret.error_string().c_str());
22322233
use_geoscheduler = true;
2233-
gOFS->MgmStats.Add("FScheduler::Placement::Failed", vid.uid, vid.gid, 1);
2234+
gOFS->MgmStats.Add("FScheduler::Placement::Failed", vid.uid, vid.gid, 1, vid.app);
22342235
}
22352236
}
22362237

@@ -2281,7 +2282,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
22812282

22822283
if (selectedfs.empty()) {
22832284
// this file has not a single existing replica
2284-
gOFS->MgmStats.Add("OpenFileOffline", vid.uid, vid.gid, 1);
2285+
gOFS->MgmStats.Add("OpenFileOffline", vid.uid, vid.gid, 1, vid.app);
22852286
// Fire and forget a sync::offline workflow event
22862287
errno = 0;
22872288
workflow.SetFile(path, mFid);
@@ -2477,7 +2478,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
24772478

24782479
if (stalltime) {
24792480
// stall the client
2480-
gOFS->MgmStats.Add("OpenStalled", vid.uid, vid.gid, 1);
2481+
gOFS->MgmStats.Add("OpenStalled", vid.uid, vid.gid, 1, vid.app);
24812482
eos_info("attr=sys info=\"stalling file since replica's are down\" path=%s rw=%d",
24822483
path, isRW);
24832484
return gOFS->Stall(error, stalltime,
@@ -2490,7 +2491,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
24902491

24912492
if (stalltime) {
24922493
// stall the client
2493-
gOFS->MgmStats.Add("OpenStalled", vid.uid, vid.gid, 1);
2494+
gOFS->MgmStats.Add("OpenStalled", vid.uid, vid.gid, 1, vid.app);
24942495
eos_info("attr=user info=\"stalling file since replica's are down\" path=%s rw=%d",
24952496
path, isRW);
24962497
return gOFS->Stall(error, stalltime,
@@ -2519,7 +2520,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
25192520
}
25202521

25212522
rcode = SFS_REDIRECT;
2522-
gOFS->MgmStats.Add("RedirectENONET", vid.uid, vid.gid, 1);
2523+
gOFS->MgmStats.Add("RedirectENONET", vid.uid, vid.gid, 1, vid.app);
25232524
return rcode;
25242525
}
25252526

@@ -2545,11 +2546,11 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
25452546
}
25462547

25472548
rcode = SFS_REDIRECT;
2548-
gOFS->MgmStats.Add("RedirectENONET", vid.uid, vid.gid, 1);
2549+
gOFS->MgmStats.Add("RedirectENONET", vid.uid, vid.gid, 1, vid.app);
25492550
return rcode;
25502551
}
25512552

2552-
gOFS->MgmStats.Add("OpenFileOffline", vid.uid, vid.gid, 1);
2553+
gOFS->MgmStats.Add("OpenFileOffline", vid.uid, vid.gid, 1, vid.app);
25532554
} else {
25542555
// Remove the created file from the namespace as root since somebody could
25552556
// have a no-delete ACL. Do this only if there are no replicas already
@@ -2579,7 +2580,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
25792580
}
25802581
}
25812582

2582-
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1);
2583+
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1, vid.app);
25832584
}
25842585

25852586
if (isRW) {
@@ -2655,7 +2656,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
26552656
std::string errmsg = e.getMessage().str();
26562657
eos_debug("msg=\"exception\" ec=%d emsg=\"%s\"\n",
26572658
e.getErrno(), e.getMessage().str().c_str());
2658-
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1);
2659+
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1, vid.app);
26592660
return Emsg(epname, error, errno, "open file", errmsg.c_str());
26602661
}
26612662

@@ -2692,7 +2693,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
26922693
std::string errmsg = e.getMessage().str();
26932694
eos_debug("msg=\"exception\" ec=%d emsg=\"%s\"\n",
26942695
e.getErrno(), e.getMessage().str().c_str());
2695-
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1);
2696+
gOFS->MgmStats.Add("OpenFailedQuota", vid.uid, vid.gid, 1, vid.app);
26962697
return Emsg(epname, error, errno, "open file", errmsg.c_str());
26972698
}
26982699
}
@@ -3092,7 +3093,7 @@ XrdMgmOfsFile::open(eos::common::VirtualIdentity* invid,
30923093
LogSchedulingInfo(selectedfs, proxys, firewalleps);
30933094

30943095
if (retc) {
3095-
gOFS->MgmStats.Add("OpenFailedReconstruct", rootvid.uid, rootvid.gid, 1);
3096+
gOFS->MgmStats.Add("OpenFailedReconstruct", rootvid.uid, rootvid.gid, 1, vid.app);
30963097
return Emsg(epname, error, retc, "schedule stripes for reconstruction", path);
30973098
}
30983099

0 commit comments

Comments
 (0)