Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
redoxfs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
redox-os
redoxfs
Commits
c990fa9a
Verified
Commit
c990fa9a
authored
Mar 13, 2020
by
Jeremy Soller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
0.4.1 - Support rename in fuse
parent
80e3a346
Pipeline
#7157
passed with stages
in 2 minutes and 5 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
6 deletions
+39
-6
Cargo.toml
Cargo.toml
+1
-1
src/mount/fuse.rs
src/mount/fuse.rs
+34
-0
src/mount/redox/scheme.rs
src/mount/redox/scheme.rs
+4
-5
No files found.
Cargo.toml
View file @
c990fa9a
...
...
@@ -2,7 +2,7 @@
name
=
"redoxfs"
description
=
"The Redox Filesystem"
repository
=
"https://gitlab.redox-os.org/redox-os/redoxfs"
version
=
"0.4.
0
"
version
=
"0.4.
1
"
license-file
=
"LICENSE"
readme
=
"README.md"
authors
=
[
"Jeremy Soller <jackpot51@gmail.com>"
]
...
...
src/mount/fuse.rs
View file @
c990fa9a
...
...
@@ -493,4 +493,38 @@ impl<D: Disk> Filesystem for Fuse<D> {
}
}
}
fn
rename
(
&
mut
self
,
_
req
:
&
Request
,
orig_parent
:
u64
,
name
:
&
OsStr
,
new_parent
:
u64
,
new_name
:
&
OsStr
,
reply
:
ReplyEmpty
)
{
let
rename_inner
=
|
fs
:
&
mut
filesystem
::
FileSystem
<
D
>
|
->
syscall
::
Result
<
()
>
{
let
mut
orig
=
fs
.find_node
(
name
.to_str
()
.unwrap
(),
orig_parent
)
?
;
if
new_parent
!=
orig_parent
{
fs
.remove_blocks
(
orig
.0
,
1
,
orig_parent
)
?
;
}
if
let
Ok
(
node
)
=
fs
.find_node
(
new_name
.to_str
()
.unwrap
(),
new_parent
)
{
if
node
.0
!=
orig
.0
{
fs
.node_set_len
(
node
.0
,
0
)
?
;
fs
.remove_blocks
(
node
.0
,
1
,
new_parent
)
?
;
fs
.write_at
(
node
.0
,
&
Node
::
default
())
?
;
fs
.deallocate
(
node
.0
,
BLOCK_SIZE
)
?
;
}
}
orig
.1
.set_name
(
&
new_name
.to_str
()
.unwrap
())
?
;
orig
.1
.parent
=
new_parent
;
fs
.write_at
(
orig
.0
,
&
orig
.1
)
?
;
if
new_parent
!=
orig_parent
{
fs
.insert_blocks
(
orig
.0
,
BLOCK_SIZE
,
new_parent
)
?
;
}
Ok
(())
};
match
rename_inner
(
&
mut
self
.fs
)
{
Ok
(())
=>
reply
.ok
(),
Err
(
err
)
=>
reply
.error
(
err
.errno
as
i32
),
}
}
}
src/mount/redox/scheme.rs
View file @
c990fa9a
...
...
@@ -632,15 +632,10 @@ impl<D: Disk> Scheme for FileScheme<D> {
let
orig_parent
=
orig
.1
.parent
;
orig
.1
.set_name
(
&
last_part
)
?
;
orig
.1
.parent
=
parent
.0
;
if
parent
.0
!=
orig_parent
{
fs
.remove_blocks
(
orig
.0
,
1
,
orig_parent
)
?
;
}
fs
.write_at
(
orig
.0
,
&
orig
.1
)
?
;
if
let
Some
(
node
)
=
node_opt
{
if
node
.0
!=
orig
.0
{
fs
.node_set_len
(
node
.0
,
0
)
?
;
...
...
@@ -650,6 +645,10 @@ impl<D: Disk> Scheme for FileScheme<D> {
}
}
orig
.1
.set_name
(
&
last_part
)
?
;
orig
.1
.parent
=
parent
.0
;
fs
.write_at
(
orig
.0
,
&
orig
.1
)
?
;
if
parent
.0
!=
orig_parent
{
fs
.insert_blocks
(
orig
.0
,
BLOCK_SIZE
,
parent
.0
)
?
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment