git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
fs
/
bfs
/
dir.c
diff --git
a/fs/bfs/dir.c
b/fs/bfs/dir.c
index
4656ecc
..
2a746e6
100644
(file)
--- a/
fs/bfs/dir.c
+++ b/
fs/bfs/dir.c
@@
-2,6
+2,7
@@
* fs/bfs/dir.c
* BFS directory operations.
* Copyright (C) 1999,2000 Tigran Aivazian <tigran@veritas.com>
* fs/bfs/dir.c
* BFS directory operations.
* Copyright (C) 1999,2000 Tigran Aivazian <tigran@veritas.com>
+ * Made endianness-clean by Andrew Stribblehill <ads@wompom.org> 2005
*/
#include <linux/time.h>
*/
#include <linux/time.h>
@@
-20,13
+21,13
@@
#define dprintf(x...)
#endif
#define dprintf(x...)
#endif
-static int bfs_add_entry(struct inode * dir, const char * name, int namelen, int ino);
+static int bfs_add_entry(struct inode * dir, const
unsigned
char * name, int namelen, int ino);
static struct buffer_head * bfs_find_entry(struct inode * dir,
static struct buffer_head * bfs_find_entry(struct inode * dir,
- const char * name, int namelen, struct bfs_dirent ** res_dir);
+ const
unsigned
char * name, int namelen, struct bfs_dirent ** res_dir);
static int bfs_readdir(struct file * f, void * dirent, filldir_t filldir)
{
static int bfs_readdir(struct file * f, void * dirent, filldir_t filldir)
{
- struct inode * dir = f->f_dentry->d_inode;
+ struct inode * dir = f->f_
path.
dentry->d_inode;
struct buffer_head * bh;
struct bfs_dirent * de;
unsigned int offset;
struct buffer_head * bh;
struct bfs_dirent * de;
unsigned int offset;
@@
-53,7
+54,7
@@
static int bfs_readdir(struct file * f, void * dirent, filldir_t filldir)
de = (struct bfs_dirent *)(bh->b_data + offset);
if (de->ino) {
int size = strnlen(de->name, BFS_NAMELEN);
de = (struct bfs_dirent *)(bh->b_data + offset);
if (de->ino) {
int size = strnlen(de->name, BFS_NAMELEN);
- if (filldir(dirent, de->name, size, f->f_pos,
de->ino
, DT_UNKNOWN) < 0) {
+ if (filldir(dirent, de->name, size, f->f_pos,
le16_to_cpu(de->ino)
, DT_UNKNOWN) < 0) {
brelse(bh);
unlock_kernel();
return 0;
brelse(bh);
unlock_kernel();
return 0;
@@
-69,7
+70,7
@@
static int bfs_readdir(struct file * f, void * dirent, filldir_t filldir)
return 0;
}
return 0;
}
-struct file_operations bfs_dir_operations = {
+
const
struct file_operations bfs_dir_operations = {
.read = generic_read_dir,
.readdir = bfs_readdir,
.fsync = file_fsync,
.read = generic_read_dir,
.readdir = bfs_readdir,
.fsync = file_fsync,
@@
-100,8
+101,8
@@
static int bfs_create(struct inode * dir, struct dentry * dentry, int mode,
info->si_freei--;
inode->i_uid = current->fsuid;
inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid;
info->si_freei--;
inode->i_uid = current->fsuid;
inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid;
- inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
- inode->i_blocks =
inode->i_blksize =
0;
+ inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME
_SEC
;
+ inode->i_blocks = 0;
inode->i_op = &bfs_file_inops;
inode->i_fop = &bfs_file_operations;
inode->i_mapping->a_ops = &bfs_aops;
inode->i_op = &bfs_file_inops;
inode->i_fop = &bfs_file_operations;
inode->i_mapping->a_ops = &bfs_aops;
@@
-116,8
+117,7
@@
static int bfs_create(struct inode * dir, struct dentry * dentry, int mode,
err = bfs_add_entry(dir, dentry->d_name.name, dentry->d_name.len, inode->i_ino);
if (err) {
err = bfs_add_entry(dir, dentry->d_name.name, dentry->d_name.len, inode->i_ino);
if (err) {
- inode->i_nlink--;
- mark_inode_dirty(inode);
+ inode_dec_link_count(inode);
iput(inode);
unlock_kernel();
return err;
iput(inode);
unlock_kernel();
return err;
@@
-139,7
+139,7
@@
static struct dentry * bfs_lookup(struct inode * dir, struct dentry * dentry, st
lock_kernel();
bh = bfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, &de);
if (bh) {
lock_kernel();
bh = bfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, &de);
if (bh) {
- unsigned long ino =
le32
_to_cpu(de->ino);
+ unsigned long ino =
(unsigned long)le16
_to_cpu(de->ino);
brelse(bh);
inode = iget(dir->i_sb, ino);
if (!inode) {
brelse(bh);
inode = iget(dir->i_sb, ino);
if (!inode) {
@@
-163,8
+163,8
@@
static int bfs_link(struct dentry * old, struct inode * dir, struct dentry * new
unlock_kernel();
return err;
}
unlock_kernel();
return err;
}
- in
ode->i_nlink++
;
- inode->i_ctime = CURRENT_TIME;
+ in
c_nlink(inode)
;
+ inode->i_ctime = CURRENT_TIME
_SEC
;
mark_inode_dirty(inode);
atomic_inc(&inode->i_count);
d_instantiate(new, inode);
mark_inode_dirty(inode);
atomic_inc(&inode->i_count);
d_instantiate(new, inode);
@@
-183,7
+183,7
@@
static int bfs_unlink(struct inode * dir, struct dentry * dentry)
inode = dentry->d_inode;
lock_kernel();
bh = bfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, &de);
inode = dentry->d_inode;
lock_kernel();
bh = bfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, &de);
- if (!bh ||
de->ino != inode->i_ino)
+ if (!bh ||
le16_to_cpu(de->ino) != inode->i_ino)
goto out_brelse;
if (!inode->i_nlink) {
goto out_brelse;
if (!inode->i_nlink) {
@@
-193,11
+193,10
@@
static int bfs_unlink(struct inode * dir, struct dentry * dentry)
}
de->ino = 0;
mark_buffer_dirty(bh);
}
de->ino = 0;
mark_buffer_dirty(bh);
- dir->i_ctime = dir->i_mtime = CURRENT_TIME;
+ dir->i_ctime = dir->i_mtime = CURRENT_TIME
_SEC
;
mark_inode_dirty(dir);
mark_inode_dirty(dir);
- inode->i_nlink--;
inode->i_ctime = dir->i_ctime;
inode->i_ctime = dir->i_ctime;
-
mark_inode_dirty
(inode);
+
inode_dec_link_count
(inode);
error = 0;
out_brelse:
error = 0;
out_brelse:
@@
-224,7
+223,7
@@
static int bfs_rename(struct inode * old_dir, struct dentry * old_dentry,
old_dentry->d_name.name,
old_dentry->d_name.len, &old_de);
old_dentry->d_name.name,
old_dentry->d_name.len, &old_de);
- if (!old_bh ||
old_de->ino
!= old_inode->i_ino)
+ if (!old_bh ||
le16_to_cpu(old_de->ino)
!= old_inode->i_ino)
goto end_rename;
error = -EPERM;
goto end_rename;
error = -EPERM;
@@
-245,12
+244,11
@@
static int bfs_rename(struct inode * old_dir, struct dentry * old_dentry,
goto end_rename;
}
old_de->ino = 0;
goto end_rename;
}
old_de->ino = 0;
- old_dir->i_ctime = old_dir->i_mtime = CURRENT_TIME;
+ old_dir->i_ctime = old_dir->i_mtime = CURRENT_TIME
_SEC
;
mark_inode_dirty(old_dir);
if (new_inode) {
mark_inode_dirty(old_dir);
if (new_inode) {
- new_inode->i_nlink--;
- new_inode->i_ctime = CURRENT_TIME;
- mark_inode_dirty(new_inode);
+ new_inode->i_ctime = CURRENT_TIME_SEC;
+ inode_dec_link_count(new_inode);
}
mark_buffer_dirty(old_bh);
error = 0;
}
mark_buffer_dirty(old_bh);
error = 0;
@@
-270,7
+268,7
@@
struct inode_operations bfs_dir_inops = {
.rename = bfs_rename,
};
.rename = bfs_rename,
};
-static int bfs_add_entry(struct inode * dir, const char * name, int namelen, int ino)
+static int bfs_add_entry(struct inode * dir, const
unsigned
char * name, int namelen, int ino)
{
struct buffer_head * bh;
struct bfs_dirent * de;
{
struct buffer_head * bh;
struct bfs_dirent * de;
@@
-300,11
+298,11
@@
static int bfs_add_entry(struct inode * dir, const char * name, int namelen, int
if (!de->ino) {
if ((block-sblock)*BFS_BSIZE + off >= dir->i_size) {
dir->i_size += BFS_DIRENT_SIZE;
if (!de->ino) {
if ((block-sblock)*BFS_BSIZE + off >= dir->i_size) {
dir->i_size += BFS_DIRENT_SIZE;
- dir->i_ctime = CURRENT_TIME;
+ dir->i_ctime = CURRENT_TIME
_SEC
;
}
}
- dir->i_mtime = CURRENT_TIME;
+ dir->i_mtime = CURRENT_TIME
_SEC
;
mark_inode_dirty(dir);
mark_inode_dirty(dir);
- de->ino =
ino
;
+ de->ino =
cpu_to_le16((u16)ino)
;
for (i=0; i<BFS_NAMELEN; i++)
de->name[i] = (i < namelen) ? name[i] : 0;
mark_buffer_dirty(bh);
for (i=0; i<BFS_NAMELEN; i++)
de->name[i] = (i < namelen) ? name[i] : 0;
mark_buffer_dirty(bh);
@@
-317,7
+315,7
@@
static int bfs_add_entry(struct inode * dir, const char * name, int namelen, int
return -ENOSPC;
}
return -ENOSPC;
}
-static inline int bfs_namecmp(int len, const char * name, const char * buffer)
+static inline int bfs_namecmp(int len, const
unsigned
char * name, const char * buffer)
{
if (len < BFS_NAMELEN && buffer[len])
return 0;
{
if (len < BFS_NAMELEN && buffer[len])
return 0;
@@
-325,7
+323,7
@@
static inline int bfs_namecmp(int len, const char * name, const char * buffer)
}
static struct buffer_head * bfs_find_entry(struct inode * dir,
}
static struct buffer_head * bfs_find_entry(struct inode * dir,
- const char * name, int namelen, struct bfs_dirent ** res_dir)
+ const
unsigned
char * name, int namelen, struct bfs_dirent ** res_dir)
{
unsigned long block, offset;
struct buffer_head * bh;
{
unsigned long block, offset;
struct buffer_head * bh;
@@
-346,7
+344,7
@@
static struct buffer_head * bfs_find_entry(struct inode * dir,
}
de = (struct bfs_dirent *)(bh->b_data + offset);
offset += BFS_DIRENT_SIZE;
}
de = (struct bfs_dirent *)(bh->b_data + offset);
offset += BFS_DIRENT_SIZE;
- if (
de->ino
&& bfs_namecmp(namelen, name, de->name)) {
+ if (
le16_to_cpu(de->ino)
&& bfs_namecmp(namelen, name, de->name)) {
*res_dir = de;
return bh;
}
*res_dir = de;
return bh;
}