@@ -440,8 +440,12 @@ CURVEFS_ERROR FuseClient::MakeNode(
440
440
if (type == FsFileType::TYPE_FILE || type == FsFileType::TYPE_S3) {
441
441
dentry.set_flag (DentryFlag::TYPE_FILE_FLAG);
442
442
}
443
-
444
- ret = dentryManager_->CreateDentry (dentry);
443
+ struct timespec now;
444
+ clock_gettime (CLOCK_REALTIME, &now);
445
+ ret = dentryManager_->CreateDentry (dentry,
446
+ enableSumInDir_.load (),
447
+ inodeWrapper->GetLength (),
448
+ now);
445
449
if (ret != CURVEFS_ERROR::OK) {
446
450
LOG (ERROR) << " dentryManager_ CreateDentry fail, ret = " << ret
447
451
<< " , parent = " << parent << " , name = " << name
@@ -456,37 +460,10 @@ CURVEFS_ERROR FuseClient::MakeNode(
456
460
return ret;
457
461
}
458
462
459
- ret = UpdateParentMCTimeAndNlink (parent, type, NlinkChange::kAddOne );
460
- if (ret != CURVEFS_ERROR::OK) {
461
- LOG (ERROR) << " UpdateParentMCTimeAndNlink failed"
462
- << " , parent: " << parent
463
- << " , name: " << name
464
- << " , type: " << type;
465
- return ret;
466
- }
467
-
468
463
VLOG (6 ) << " dentryManager_ CreateDentry success"
469
464
<< " , parent = " << parent << " , name = " << name
470
- << " , mode = " << mode;
471
-
472
- if (enableSumInDir_.load ()) {
473
- // update parent summary info
474
- XAttr xattr;
475
- xattr.mutable_xattrinfos ()->insert ({XATTRENTRIES, " 1" });
476
- if (type == FsFileType::TYPE_DIRECTORY) {
477
- xattr.mutable_xattrinfos ()->insert ({XATTRSUBDIRS, " 1" });
478
- } else {
479
- xattr.mutable_xattrinfos ()->insert ({XATTRFILES, " 1" });
480
- }
481
- xattr.mutable_xattrinfos ()->insert ({XATTRFBYTES,
482
- std::to_string (inodeWrapper->GetLength ())});
483
- auto tret = xattrManager_->UpdateParentInodeXattr (parent, xattr, true );
484
- if (tret != CURVEFS_ERROR::OK) {
485
- LOG (ERROR) << " UpdateParentInodeXattr failed,"
486
- << " inodeId = " << parent
487
- << " , xattr = " << xattr.DebugString ();
488
- }
489
- }
465
+ << " , mode = " << mode << " , length:" << inodeWrapper->GetLength ()
466
+ << " , sumIndir:" << enableSumInDir_.load ();
490
467
491
468
return ret;
492
469
}
@@ -620,8 +597,12 @@ CURVEFS_ERROR FuseClient::CreateManageNode(fuse_req_t req,
620
597
if (type == FsFileType::TYPE_FILE || type == FsFileType::TYPE_S3) {
621
598
dentry.set_flag (DentryFlag::TYPE_FILE_FLAG);
622
599
}
623
-
624
- ret = dentryManager_->CreateDentry (dentry);
600
+ struct timespec now;
601
+ clock_gettime (CLOCK_REALTIME, &now);
602
+ ret = dentryManager_->CreateDentry (dentry,
603
+ enableSumInDir_.load (),
604
+ inodeWrapper->GetLength (),
605
+ now);
625
606
if (ret != CURVEFS_ERROR::OK) {
626
607
LOG (ERROR) << " dentryManager_ CreateDentry fail, ret = " << ret
627
608
<< " , parent = " << parent << " , name = " << name
@@ -636,38 +617,10 @@ CURVEFS_ERROR FuseClient::CreateManageNode(fuse_req_t req,
636
617
return ret;
637
618
}
638
619
639
- ret = UpdateParentMCTimeAndNlink (parent, type, NlinkChange::kAddOne );
640
- if (ret != CURVEFS_ERROR::OK) {
641
- LOG (ERROR) << " UpdateParentMCTimeAndNlink failed"
642
- << " , parent: " << parent
643
- << " , name: " << name
644
- << " , type: " << type;
645
- return ret;
646
- }
647
-
648
620
VLOG (6 ) << " dentryManager_ CreateDentry success"
649
621
<< " , parent = " << parent << " , name = " << name
650
622
<< " , mode = " << mode;
651
623
652
- if (enableSumInDir_.load ()) {
653
- // update parent summary info
654
- XAttr xattr;
655
- xattr.mutable_xattrinfos ()->insert ({XATTRENTRIES, " 1" });
656
- if (type == FsFileType::TYPE_DIRECTORY) {
657
- xattr.mutable_xattrinfos ()->insert ({XATTRSUBDIRS, " 1" });
658
- } else {
659
- xattr.mutable_xattrinfos ()->insert ({XATTRFILES, " 1" });
660
- }
661
- xattr.mutable_xattrinfos ()->insert ({XATTRFBYTES,
662
- std::to_string (inodeWrapper->GetLength ())});
663
- auto tret = xattrManager_->UpdateParentInodeXattr (parent, xattr, true );
664
- if (tret != CURVEFS_ERROR::OK) {
665
- LOG (ERROR) << " UpdateParentInodeXattr failed,"
666
- << " inodeId = " << parent
667
- << " , xattr = " << xattr.DebugString ();
668
- }
669
- }
670
-
671
624
inodeWrapper->GetInodeAttrLocked (&entryOut->attr );
672
625
return ret;
673
626
}
@@ -1216,7 +1169,12 @@ CURVEFS_ERROR FuseClient::FuseOpSymlink(fuse_req_t req,
1216
1169
dentry.set_parentinodeid (parent);
1217
1170
dentry.set_name (name);
1218
1171
dentry.set_type (inodeWrapper->GetType ());
1219
- ret = dentryManager_->CreateDentry (dentry);
1172
+ struct timespec now;
1173
+ clock_gettime (CLOCK_REALTIME, &now);
1174
+ ret = dentryManager_->CreateDentry (dentry,
1175
+ enableSumInDir_.load (),
1176
+ inodeWrapper->GetLength (),
1177
+ now);
1220
1178
if (ret != CURVEFS_ERROR::OK) {
1221
1179
LOG (ERROR) << " dentryManager_ CreateDentry fail, ret = " << ret
1222
1180
<< " , parent = " << parent << " , name = " << name
@@ -1231,32 +1189,6 @@ CURVEFS_ERROR FuseClient::FuseOpSymlink(fuse_req_t req,
1231
1189
return ret;
1232
1190
}
1233
1191
1234
- ret = UpdateParentMCTimeAndNlink (parent, FsFileType::TYPE_SYM_LINK,
1235
- NlinkChange::kAddOne );
1236
- if (ret != CURVEFS_ERROR::OK) {
1237
- LOG (ERROR) << " UpdateParentMCTimeAndNlink failed"
1238
- << " , link:" << link
1239
- << " , parent: " << parent
1240
- << " , name: " << name
1241
- << " , type: " << FsFileType::TYPE_SYM_LINK;
1242
- return ret;
1243
- }
1244
-
1245
- if (enableSumInDir_.load ()) {
1246
- // update parent summary info
1247
- XAttr xattr;
1248
- xattr.mutable_xattrinfos ()->insert ({XATTRENTRIES, " 1" });
1249
- xattr.mutable_xattrinfos ()->insert ({XATTRFILES, " 1" });
1250
- xattr.mutable_xattrinfos ()->insert ({XATTRFBYTES,
1251
- std::to_string (inodeWrapper->GetLength ())});
1252
- auto tret = xattrManager_->UpdateParentInodeXattr (parent, xattr, true );
1253
- if (tret != CURVEFS_ERROR::OK) {
1254
- LOG (ERROR) << " UpdateParentInodeXattr failed,"
1255
- << " inodeId = " << parent
1256
- << " , xattr = " << xattr.DebugString ();
1257
- }
1258
- }
1259
-
1260
1192
inodeWrapper->GetInodeAttr (&entryOut->attr );
1261
1193
return ret;
1262
1194
}
@@ -1290,7 +1222,12 @@ CURVEFS_ERROR FuseClient::FuseOpLink(fuse_req_t req,
1290
1222
dentry.set_parentinodeid (newparent);
1291
1223
dentry.set_name (newname);
1292
1224
dentry.set_type (inodeWrapper->GetType ());
1293
- ret = dentryManager_->CreateDentry (dentry);
1225
+ struct timespec now;
1226
+ clock_gettime (CLOCK_REALTIME, &now);
1227
+ ret = dentryManager_->CreateDentry (dentry,
1228
+ enableSumInDir_.load (),
1229
+ inodeWrapper->GetLength (),
1230
+ now);
1294
1231
if (ret != CURVEFS_ERROR::OK) {
1295
1232
LOG (ERROR) << " dentryManager_ CreateDentry fail, ret = " << ret
1296
1233
<< " , parent = " << newparent << " , name = " << newname;
@@ -1303,31 +1240,6 @@ CURVEFS_ERROR FuseClient::FuseOpLink(fuse_req_t req,
1303
1240
return ret;
1304
1241
}
1305
1242
1306
- ret = UpdateParentMCTimeAndNlink (newparent, type, NlinkChange::kAddOne );
1307
- if (ret != CURVEFS_ERROR::OK) {
1308
- LOG (ERROR) << " UpdateParentMCTimeAndNlink failed"
1309
- << " , parent: " << newparent
1310
- << " , name: " << newname
1311
- << " , type: " << type;
1312
- return ret;
1313
- }
1314
-
1315
- if (enableSumInDir_.load ()) {
1316
- // update parent summary info
1317
- XAttr xattr;
1318
- xattr.mutable_xattrinfos ()->insert ({XATTRENTRIES, " 1" });
1319
- xattr.mutable_xattrinfos ()->insert ({XATTRFILES, " 1" });
1320
- xattr.mutable_xattrinfos ()->insert ({XATTRFBYTES,
1321
- std::to_string (inodeWrapper->GetLength ())});
1322
- auto tret = xattrManager_->UpdateParentInodeXattr (
1323
- newparent, xattr, true );
1324
- if (tret != CURVEFS_ERROR::OK) {
1325
- LOG (ERROR) << " UpdateParentInodeXattr failed,"
1326
- << " inodeId = " << newparent
1327
- << " , xattr = " << xattr.DebugString ();
1328
- }
1329
- }
1330
-
1331
1243
inodeWrapper->GetInodeAttr (&entryOut->attr );
1332
1244
return ret;
1333
1245
}
0 commit comments