Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Juicedata
JuiceFS
提交
f4823b36
JuiceFS
项目概览
Juicedata
/
JuiceFS
通知
10
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
JuiceFS
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
f4823b36
编写于
5月 13, 2021
作者:
D
Davies Liu
提交者:
GitHub
5月 13, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
specify updated columns (#406)
上级
b2e6f3a1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
17 deletion
+21
-17
pkg/meta/sql.go
pkg/meta/sql.go
+21
-17
未找到文件。
pkg/meta/sql.go
浏览文件 @
f4823b36
...
...
@@ -570,7 +570,7 @@ func (m *dbMeta) SetAttr(ctx Context, inode Ino, set uint16, sugidclearmode uint
return
nil
}
cur
.
Ctime
=
now
_
,
err
=
s
.
Update
(
&
cur
,
&
node
{
Inode
:
inode
})
_
,
err
=
s
.
Cols
(
"mode"
,
"uid"
,
"gid"
,
"atime"
,
"mtime"
,
"ctime"
)
.
Update
(
&
cur
,
&
node
{
Inode
:
inode
})
if
err
==
nil
{
m
.
parseAttr
(
&
cur
,
attr
)
}
...
...
@@ -651,9 +651,11 @@ func (m *dbMeta) Truncate(ctx Context, inode Ino, flags uint8, length uint64, at
}
}
newSpace
=
align4K
(
length
)
-
align4K
(
n
.
Length
)
now
:=
time
.
Now
()
.
UnixNano
()
/
1e3
n
.
Length
=
length
n
.
Ctime
=
time
.
Now
()
.
UnixNano
()
/
1e3
_
,
err
=
s
.
Cols
(
"length"
,
"Ctime"
)
.
Update
(
&
n
,
&
node
{
Inode
:
n
.
Inode
})
n
.
Mtime
=
now
n
.
Ctime
=
now
_
,
err
=
s
.
Cols
(
"length"
,
"mtime"
,
"ctime"
)
.
Update
(
&
n
,
&
node
{
Inode
:
n
.
Inode
})
if
err
!=
nil
{
return
err
}
...
...
@@ -707,9 +709,11 @@ func (m *dbMeta) Fallocate(ctx Context, inode Ino, mode uint8, off uint64, size
old
:=
n
.
Length
newSpace
=
align4K
(
length
)
-
align4K
(
n
.
Length
)
now
:=
time
.
Now
()
.
UnixNano
()
/
1e3
n
.
Length
=
length
n
.
Ctime
=
time
.
Now
()
.
UnixNano
()
/
1e3
if
_
,
err
:=
s
.
Update
(
&
n
,
&
node
{
Inode
:
inode
});
err
!=
nil
{
n
.
Mtime
=
now
n
.
Ctime
=
now
if
_
,
err
:=
s
.
Cols
(
"length"
,
"mtime"
,
"ctime"
)
.
Update
(
&
n
,
&
node
{
Inode
:
inode
});
err
!=
nil
{
return
err
}
if
mode
&
(
fallocZeroRange
|
fallocPunchHole
)
!=
0
{
...
...
@@ -843,7 +847,7 @@ func (m *dbMeta) mknod(ctx Context, parent Ino, name string, _type uint8, mode,
if
_
,
err
=
s
.
Insert
(
&
edge
{
parent
,
name
,
ino
,
_type
});
err
!=
nil
{
return
err
}
if
_
,
err
:=
s
.
Update
(
&
pn
,
&
node
{
Inode
:
pn
.
Inode
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"nlink"
,
"mtime"
,
"ctime"
)
.
Update
(
&
pn
,
&
node
{
Inode
:
pn
.
Inode
});
err
!=
nil
{
return
err
}
if
_
,
err
:=
s
.
Insert
(
&
n
);
err
!=
nil
{
...
...
@@ -937,12 +941,12 @@ func (m *dbMeta) Unlink(ctx Context, parent Ino, name string) syscall.Errno {
if
_
,
err
:=
s
.
Delete
(
&
xattr
{
Inode
:
e
.
Inode
});
err
!=
nil
{
return
err
}
if
_
,
err
=
s
.
Update
(
&
pn
,
&
node
{
Inode
:
pn
.
Inode
});
err
!=
nil
{
if
_
,
err
=
s
.
Cols
(
"mtime"
,
"ctime"
)
.
Update
(
&
pn
,
&
node
{
Inode
:
pn
.
Inode
});
err
!=
nil
{
return
err
}
if
n
.
Nlink
>
0
{
if
_
,
err
:=
s
.
Update
(
&
n
,
&
node
{
Inode
:
e
.
Inode
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"nlink"
,
"ctime"
)
.
Update
(
&
n
,
&
node
{
Inode
:
e
.
Inode
});
err
!=
nil
{
return
err
}
}
else
{
...
...
@@ -1052,7 +1056,7 @@ func (m *dbMeta) Rmdir(ctx Context, parent Ino, name string) syscall.Errno {
if
_
,
err
:=
s
.
Delete
(
&
xattr
{
Inode
:
e
.
Inode
});
err
!=
nil
{
return
err
}
_
,
err
=
s
.
Update
(
&
pn
,
&
node
{
Inode
:
pn
.
Inode
})
_
,
err
=
s
.
Cols
(
"nlink"
,
"mtime"
,
"ctime"
)
.
Update
(
&
pn
,
&
node
{
Inode
:
pn
.
Inode
})
return
err
})
if
err
==
nil
{
...
...
@@ -1184,7 +1188,7 @@ func (m *dbMeta) Rename(ctx Context, parentSrc Ino, nameSrc string, parentDst In
}
else
if
n
!=
1
{
return
fmt
.
Errorf
(
"delete src failed"
)
}
if
_
,
err
:=
s
.
Update
(
&
spn
,
&
node
{
Inode
:
parentSrc
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"nlink"
,
"mtime"
,
"ctime"
)
.
Update
(
&
spn
,
&
node
{
Inode
:
parentSrc
});
err
!=
nil
{
return
err
}
if
dino
>
0
{
...
...
@@ -1195,7 +1199,7 @@ func (m *dbMeta) Rename(ctx Context, parentSrc Ino, nameSrc string, parentDst In
}
else
{
if
dn
.
Type
==
TypeFile
{
if
opened
{
if
_
,
err
:=
s
.
Update
(
&
dn
,
&
node
{
Inode
:
dn
.
Inode
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"nlink"
,
"ctime"
)
.
Update
(
&
dn
,
&
node
{
Inode
:
dn
.
Inode
});
err
!=
nil
{
return
err
}
if
_
,
err
:=
s
.
Insert
(
sustained
{
m
.
sid
,
dn
.
Inode
});
err
!=
nil
{
...
...
@@ -1237,11 +1241,11 @@ func (m *dbMeta) Rename(ctx Context, parentSrc Ino, nameSrc string, parentDst In
return
fmt
.
Errorf
(
"insert edge(%d,%s) failed"
,
parentDst
,
nameDst
)
}
if
parentDst
!=
parentSrc
{
if
_
,
err
:=
s
.
Update
(
&
dpn
,
&
node
{
Inode
:
parentDst
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"nlink"
,
"mtime"
,
"ctime"
)
.
Update
(
&
dpn
,
&
node
{
Inode
:
parentDst
});
err
!=
nil
{
return
err
}
}
if
_
,
err
:=
s
.
Update
(
&
sn
,
&
node
{
Inode
:
sn
.
Inode
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"ctime"
)
.
Update
(
&
sn
,
&
node
{
Inode
:
sn
.
Inode
});
err
!=
nil
{
return
err
}
if
err
==
nil
&&
dino
>
0
&&
dn
.
Type
==
TypeFile
{
...
...
@@ -1304,10 +1308,10 @@ func (m *dbMeta) Link(ctx Context, inode, parent Ino, name string, attr *Attr) s
if
ok
,
err
:=
s
.
Insert
(
&
edge
{
Parent
:
parent
,
Name
:
name
,
Inode
:
inode
,
Type
:
n
.
Type
});
err
!=
nil
||
ok
==
0
{
return
err
}
if
_
,
err
:=
s
.
Update
(
&
pn
,
&
node
{
Inode
:
parent
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"mtime"
,
"ctime"
)
.
Update
(
&
pn
,
&
node
{
Inode
:
parent
});
err
!=
nil
{
return
err
}
if
_
,
err
:=
s
.
Cols
(
"nlink"
)
.
Update
(
&
n
,
node
{
Inode
:
inode
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"nlink"
,
"ctime"
)
.
Update
(
&
n
,
node
{
Inode
:
inode
});
err
!=
nil
{
return
err
}
if
err
==
nil
{
...
...
@@ -1597,7 +1601,7 @@ func (m *dbMeta) Write(ctx Context, inode Ino, indx uint32, off uint32, slice Sl
if
_
,
err
:=
s
.
Insert
(
chunkRef
{
slice
.
Chunkid
,
slice
.
Size
,
1
});
err
!=
nil
{
return
err
}
_
,
err
=
s
.
Update
(
&
n
,
&
node
{
Inode
:
inode
})
_
,
err
=
s
.
Cols
(
"length"
,
"mtime"
,
"ctime"
)
.
Update
(
&
n
,
&
node
{
Inode
:
inode
})
if
(
len
(
ck
.
Slices
)
/
sliceBytes
)
%
20
==
19
{
go
m
.
compactChunk
(
inode
,
indx
,
false
)
}
...
...
@@ -1716,7 +1720,7 @@ func (m *dbMeta) CopyFileRange(ctx Context, fin Ino, offIn uint64, fout Ino, off
}
}
}
if
_
,
err
:=
s
.
Update
(
&
nout
,
&
node
{
Inode
:
fout
});
err
!=
nil
{
if
_
,
err
:=
s
.
Cols
(
"length"
,
"mtime"
,
"ctime"
)
.
Update
(
&
nout
,
&
node
{
Inode
:
fout
});
err
!=
nil
{
return
err
}
*
copied
=
size
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录