Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
linux
linux-davinci
Commits
1390334b
Commit
1390334b
authored
Sep 08, 2006
by
Mark Fasheh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ocfs2: Remove the dentry vote
This is unused now. Signed-off-by:
Mark Fasheh
<
mark.fasheh@oracle.com
>
parent
379dfe9d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
2 additions
and
183 deletions
+2
-183
fs/ocfs2/vote.c
fs/ocfs2/vote.c
+2
-178
fs/ocfs2/vote.h
fs/ocfs2/vote.h
+0
-5
No files found.
fs/ocfs2/vote.c
View file @
1390334b
...
...
@@ -74,9 +74,6 @@ struct ocfs2_vote_msg
__be32
v_orphaned_slot
;
/* Used during delete votes */
__be32
v_nlink
;
/* Used during unlink votes */
}
md1
;
/* Message type dependant 1 */
__be32
v_unlink_namelen
;
__be64
v_unlink_parent
;
u8
v_unlink_dirent
[
OCFS2_VOTE_FILENAME_LEN
];
};
/* Responses are given these values to maintain backwards
...
...
@@ -100,8 +97,6 @@ struct ocfs2_vote_work {
enum
ocfs2_vote_request
{
OCFS2_VOTE_REQ_INVALID
=
0
,
OCFS2_VOTE_REQ_DELETE
,
OCFS2_VOTE_REQ_UNLINK
,
OCFS2_VOTE_REQ_RENAME
,
OCFS2_VOTE_REQ_MOUNT
,
OCFS2_VOTE_REQ_UMOUNT
,
OCFS2_VOTE_REQ_LAST
...
...
@@ -261,103 +256,13 @@ done:
return
response
;
}
static
int
ocfs2_match_dentry
(
struct
dentry
*
dentry
,
u64
parent_blkno
,
unsigned
int
namelen
,
const
char
*
name
)
{
struct
inode
*
parent
;
if
(
!
dentry
->
d_parent
)
{
mlog
(
0
,
"Detached from parent.
\n
"
);
return
0
;
}
parent
=
dentry
->
d_parent
->
d_inode
;
/* Negative parent dentry? */
if
(
!
parent
)
return
0
;
/* Name is in a different directory. */
if
(
OCFS2_I
(
parent
)
->
ip_blkno
!=
parent_blkno
)
return
0
;
if
(
dentry
->
d_name
.
len
!=
namelen
)
return
0
;
/* comparison above guarantees this is safe. */
if
(
memcmp
(
dentry
->
d_name
.
name
,
name
,
namelen
))
return
0
;
return
1
;
}
static
void
ocfs2_process_dentry_request
(
struct
inode
*
inode
,
int
rename
,
unsigned
int
new_nlink
,
u64
parent_blkno
,
unsigned
int
namelen
,
const
char
*
name
)
{
struct
dentry
*
dentry
=
NULL
;
struct
list_head
*
p
;
struct
ocfs2_inode_info
*
oi
=
OCFS2_I
(
inode
);
mlog
(
0
,
"parent %llu, namelen = %u, name = %.*s
\n
"
,
(
unsigned
long
long
)
parent_blkno
,
namelen
,
namelen
,
name
);
spin_lock
(
&
dcache_lock
);
/* Another node is removing this name from the system. It is
* up to us to find the corresponding dentry and if it exists,
* unhash it from the dcache. */
list_for_each
(
p
,
&
inode
->
i_dentry
)
{
dentry
=
list_entry
(
p
,
struct
dentry
,
d_alias
);
if
(
ocfs2_match_dentry
(
dentry
,
parent_blkno
,
namelen
,
name
))
{
mlog
(
0
,
"dentry found: %.*s
\n
"
,
dentry
->
d_name
.
len
,
dentry
->
d_name
.
name
);
dget_locked
(
dentry
);
break
;
}
dentry
=
NULL
;
}
spin_unlock
(
&
dcache_lock
);
if
(
dentry
)
{
d_delete
(
dentry
);
dput
(
dentry
);
}
/* rename votes don't send link counts */
if
(
!
rename
)
{
mlog
(
0
,
"new_nlink = %u
\n
"
,
new_nlink
);
/* We don't have the proper locks here to directly
* change i_nlink and besides, the vote is sent
* *before* the operation so it may have failed on the
* other node. This passes a hint to ocfs2_drop_inode
* to force ocfs2_delete_inode, who will take the
* proper cluster locks to sort things out. */
if
(
new_nlink
==
0
)
{
spin_lock
(
&
oi
->
ip_lock
);
oi
->
ip_flags
|=
OCFS2_INODE_MAYBE_ORPHANED
;
spin_unlock
(
&
OCFS2_I
(
inode
)
->
ip_lock
);
}
}
}
static
void
ocfs2_process_vote
(
struct
ocfs2_super
*
osb
,
struct
ocfs2_vote_msg
*
msg
)
{
int
net_status
,
vote_response
;
int
orphaned_slot
=
0
;
int
rename
=
0
;
unsigned
int
node_num
,
generation
,
new_nlink
,
namelen
;
u64
blkno
,
parent_blkno
;
unsigned
int
node_num
,
generation
;
u64
blkno
;
enum
ocfs2_vote_request
request
;
struct
inode
*
inode
=
NULL
;
struct
ocfs2_msg_hdr
*
hdr
=
&
msg
->
v_hdr
;
...
...
@@ -437,18 +342,6 @@ static void ocfs2_process_vote(struct ocfs2_super *osb,
vote_response
=
ocfs2_process_delete_request
(
inode
,
&
orphaned_slot
);
break
;
case
OCFS2_VOTE_REQ_RENAME
:
rename
=
1
;
/* fall through */
case
OCFS2_VOTE_REQ_UNLINK
:
parent_blkno
=
be64_to_cpu
(
msg
->
v_unlink_parent
);
namelen
=
be32_to_cpu
(
msg
->
v_unlink_namelen
);
/* new_nlink will be ignored in case of a rename vote */
new_nlink
=
be32_to_cpu
(
msg
->
md1
.
v_nlink
);
ocfs2_process_dentry_request
(
inode
,
rename
,
new_nlink
,
parent_blkno
,
namelen
,
msg
->
v_unlink_dirent
);
break
;
default:
mlog
(
ML_ERROR
,
"node %u, invalid request: %u
\n
"
,
node_num
,
request
);
...
...
@@ -889,75 +782,6 @@ int ocfs2_request_delete_vote(struct inode *inode)
return
status
;
}
static
void
ocfs2_setup_unlink_vote
(
struct
ocfs2_vote_msg
*
request
,
struct
dentry
*
dentry
)
{
struct
inode
*
parent
=
dentry
->
d_parent
->
d_inode
;
/* We need some values which will uniquely identify a dentry
* on the other nodes so that they can find it and run
* d_delete against it. Parent directory block and full name
* should suffice. */
mlog
(
0
,
"unlink/rename request: parent: %llu name: %.*s
\n
"
,
(
unsigned
long
long
)
OCFS2_I
(
parent
)
->
ip_blkno
,
dentry
->
d_name
.
len
,
dentry
->
d_name
.
name
);
request
->
v_unlink_parent
=
cpu_to_be64
(
OCFS2_I
(
parent
)
->
ip_blkno
);
request
->
v_unlink_namelen
=
cpu_to_be32
(
dentry
->
d_name
.
len
);
memcpy
(
request
->
v_unlink_dirent
,
dentry
->
d_name
.
name
,
dentry
->
d_name
.
len
);
}
int
ocfs2_request_unlink_vote
(
struct
inode
*
inode
,
struct
dentry
*
dentry
,
unsigned
int
nlink
)
{
int
status
;
struct
ocfs2_super
*
osb
=
OCFS2_SB
(
inode
->
i_sb
);
struct
ocfs2_vote_msg
*
request
;
if
(
dentry
->
d_name
.
len
>
OCFS2_VOTE_FILENAME_LEN
)
return
-
ENAMETOOLONG
;
status
=
-
ENOMEM
;
request
=
ocfs2_new_vote_request
(
osb
,
OCFS2_I
(
inode
)
->
ip_blkno
,
inode
->
i_generation
,
OCFS2_VOTE_REQ_UNLINK
,
nlink
);
if
(
request
)
{
ocfs2_setup_unlink_vote
(
request
,
dentry
);
status
=
ocfs2_request_vote
(
inode
,
request
,
NULL
);
kfree
(
request
);
}
return
status
;
}
int
ocfs2_request_rename_vote
(
struct
inode
*
inode
,
struct
dentry
*
dentry
)
{
int
status
;
struct
ocfs2_super
*
osb
=
OCFS2_SB
(
inode
->
i_sb
);
struct
ocfs2_vote_msg
*
request
;
if
(
dentry
->
d_name
.
len
>
OCFS2_VOTE_FILENAME_LEN
)
return
-
ENAMETOOLONG
;
status
=
-
ENOMEM
;
request
=
ocfs2_new_vote_request
(
osb
,
OCFS2_I
(
inode
)
->
ip_blkno
,
inode
->
i_generation
,
OCFS2_VOTE_REQ_RENAME
,
0
);
if
(
request
)
{
ocfs2_setup_unlink_vote
(
request
,
dentry
);
status
=
ocfs2_request_vote
(
inode
,
request
,
NULL
);
kfree
(
request
);
}
return
status
;
}
int
ocfs2_request_mount_vote
(
struct
ocfs2_super
*
osb
)
{
int
status
;
...
...
fs/ocfs2/vote.h
View file @
1390334b
...
...
@@ -39,11 +39,6 @@ static inline void ocfs2_kick_vote_thread(struct ocfs2_super *osb)
}
int
ocfs2_request_delete_vote
(
struct
inode
*
inode
);
int
ocfs2_request_unlink_vote
(
struct
inode
*
inode
,
struct
dentry
*
dentry
,
unsigned
int
nlink
);
int
ocfs2_request_rename_vote
(
struct
inode
*
inode
,
struct
dentry
*
dentry
);
int
ocfs2_request_mount_vote
(
struct
ocfs2_super
*
osb
);
int
ocfs2_request_umount_vote
(
struct
ocfs2_super
*
osb
);
int
ocfs2_register_net_handlers
(
struct
ocfs2_super
*
osb
);
...
...
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