@@ -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