Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
b9386771
Commit
b9386771
authored
Oct 03, 2004
by
Anton Altaparmakov
Browse files
Options
Browse Files
Download
Plain Diff
Merge
ssh://linux-ntfs@bkbits.net/ntfs-2.6-devel
into cantab.net:/home/src/ntfs-2.6-devel
parents
54f4cc4a
ec4db73b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
63 additions
and
42 deletions
+63
-42
Documentation/filesystems/ntfs.txt
Documentation/filesystems/ntfs.txt
+2
-0
Documentation/tty.txt
Documentation/tty.txt
+4
-4
arch/ppc/platforms/pmac_pci.c
arch/ppc/platforms/pmac_pci.c
+7
-0
arch/ppc64/kernel/pmac_pci.c
arch/ppc64/kernel/pmac_pci.c
+11
-1
drivers/char/tty_io.c
drivers/char/tty_io.c
+5
-8
drivers/char/tty_ioctl.c
drivers/char/tty_ioctl.c
+9
-21
fs/locks.c
fs/locks.c
+7
-4
fs/ntfs/ChangeLog
fs/ntfs/ChangeLog
+13
-2
fs/ntfs/Makefile
fs/ntfs/Makefile
+1
-1
fs/ntfs/attrib.c
fs/ntfs/attrib.c
+3
-1
include/linux/tty.h
include/linux/tty.h
+1
-0
No files found.
Documentation/filesystems/ntfs.txt
View file @
b9386771
...
...
@@ -277,6 +277,8 @@ ChangeLog
Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
2.1.20:
- Fix two stupid bugs introduced in 2.1.18 release.
2.1.19:
- Minor bugfix in handling of the default upcase table.
- Many internal cleanups and improvements. Many thanks to Linus
...
...
Documentation/tty.txt
View file @
b9386771
...
...
@@ -60,8 +60,8 @@ chars_in_buffer() - Report the number of bytes in the buffer.
set_termios() - Called on termios structure changes. The caller
passes the old termios data and the current data
is in the tty. Called under the termios
lock
so
may not
sleep. Serialized against itself only.
is in the tty. Called under the termios
semaphore
so
allowed to
sleep. Serialized against itself only.
read() - Move data from the line discipline to the user.
Multiple read calls may occur in parallel and the
...
...
@@ -158,8 +158,8 @@ write_room() - Return the number of characters tht can be stuffed
ioctl() - Called when an ioctl may be for the driver
set_termios() - Called on termios change,
may get parallel calls,
may block for now (may change that)
set_termios() - Called on termios change,
serialized against
itself by a semaphore. May sleep.
set_ldisc() - Notifier for discipline change. At the point this
is done the discipline is not yet usable. Can now
...
...
arch/ppc/platforms/pmac_pci.c
View file @
b9386771
...
...
@@ -316,6 +316,10 @@ u3_ht_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
unsigned
int
addr
;
int
i
;
struct
device_node
*
np
=
pci_busdev_to_OF_node
(
bus
,
devfn
);
if
(
np
==
NULL
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
/*
* When a device in K2 is powered down, we die on config
* cycle accesses. Fix that here.
...
...
@@ -363,6 +367,9 @@ u3_ht_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
unsigned
int
addr
;
int
i
;
struct
device_node
*
np
=
pci_busdev_to_OF_node
(
bus
,
devfn
);
if
(
np
==
NULL
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
/*
* When a device in K2 is powered down, we die on config
* cycle accesses. Fix that here.
...
...
arch/ppc64/kernel/pmac_pci.c
View file @
b9386771
...
...
@@ -271,7 +271,7 @@ static int __pmac u3_ht_read_config(struct pci_bus *bus, unsigned int devfn,
int
offset
,
int
len
,
u32
*
val
)
{
struct
pci_controller
*
hose
;
struct
device_node
*
busdn
;
struct
device_node
*
busdn
,
*
dn
;
unsigned
long
addr
;
if
(
bus
->
self
)
...
...
@@ -284,6 +284,16 @@ static int __pmac u3_ht_read_config(struct pci_bus *bus, unsigned int devfn,
if
(
hose
==
NULL
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
/* We only allow config cycles to devices that are in OF device-tree
* as we are apparently having some weird things going on with some
* revs of K2 on recent G5s
*/
for
(
dn
=
busdn
->
child
;
dn
;
dn
=
dn
->
sibling
)
if
(
dn
->
devfn
==
devfn
)
break
;
if
(
dn
==
NULL
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
addr
=
u3_ht_cfg_access
(
hose
,
bus
->
number
,
devfn
,
offset
);
if
(
!
addr
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
...
...
drivers/char/tty_io.c
View file @
b9386771
...
...
@@ -130,8 +130,6 @@ LIST_HEAD(tty_drivers); /* linked list of tty drivers */
/* Semaphore to protect creating and releasing a tty. This is shared with
vt.c for deeply disgusting hack reasons */
DECLARE_MUTEX
(
tty_sem
);
/* Lock for tty_termios changes - private to tty_io/tty_ioctl */
spinlock_t
tty_termios_lock
=
SPIN_LOCK_UNLOCKED
;
#ifdef CONFIG_UNIX98_PTYS
extern
struct
tty_driver
*
ptm_driver
;
/* Unix98 pty masters; for /dev/ptmx */
...
...
@@ -239,10 +237,9 @@ static int check_tty_count(struct tty_struct *tty, const char *routine)
static
void
tty_set_termios_ldisc
(
struct
tty_struct
*
tty
,
int
num
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
tty_termios_lock
,
flags
);
down
(
&
tty
->
termios_sem
);
tty
->
termios
->
c_line
=
num
;
spin_unlock_irqrestore
(
&
tty_termios_lock
,
flags
);
up
(
&
tty
->
termios_sem
);
}
/*
...
...
@@ -811,10 +808,9 @@ void do_tty_hangup(void *data)
*/
if
(
tty
->
driver
->
flags
&
TTY_DRIVER_RESET_TERMIOS
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
tty_termios_lock
,
flags
);
down
(
&
tty
->
termios_sem
);
*
tty
->
termios
=
tty
->
driver
->
init_termios
;
spin_unlock_irqrestore
(
&
tty_termios_lock
,
flags
);
up
(
&
tty
->
termios_sem
);
}
/* Defer ldisc switch */
...
...
@@ -2606,6 +2602,7 @@ static void initialize_tty_struct(struct tty_struct *tty)
tty
->
flip
.
flag_buf_ptr
=
tty
->
flip
.
flag_buf
;
INIT_WORK
(
&
tty
->
flip
.
work
,
flush_to_ldisc
,
tty
);
init_MUTEX
(
&
tty
->
flip
.
pty_sem
);
init_MUTEX
(
&
tty
->
termios_sem
);
init_waitqueue_head
(
&
tty
->
write_wait
);
init_waitqueue_head
(
&
tty
->
read_wait
);
INIT_WORK
(
&
tty
->
hangup_work
,
do_tty_hangup
,
tty
);
...
...
drivers/char/tty_ioctl.c
View file @
b9386771
...
...
@@ -29,8 +29,6 @@
#undef DEBUG
extern
spinlock_t
tty_termios_lock
;
/*
* Internal flag options for termios setting behavior
*/
...
...
@@ -101,7 +99,6 @@ static void change_termios(struct tty_struct * tty, struct termios * new_termios
int
canon_change
;
struct
termios
old_termios
=
*
tty
->
termios
;
struct
tty_ldisc
*
ld
;
unsigned
long
flags
;
/*
* Perform the actual termios internal changes under lock.
...
...
@@ -110,7 +107,7 @@ static void change_termios(struct tty_struct * tty, struct termios * new_termios
/* FIXME: we need to decide on some locking/ordering semantics
for the set_termios notification eventually */
spin_lock_irqsave
(
&
tty_termios_lock
,
flags
);
down
(
&
tty
->
termios_sem
);
*
tty
->
termios
=
*
new_termios
;
unset_locked_termios
(
tty
->
termios
,
&
old_termios
,
tty
->
termios_locked
);
...
...
@@ -145,13 +142,6 @@ static void change_termios(struct tty_struct * tty, struct termios * new_termios
wake_up_interruptible
(
&
tty
->
link
->
read_wait
);
}
}
/*
* Fixme! We should really try to protect the driver and ldisc
* termios usage too. But they need to be able to sleep, so
* the global termios spinlock is not the right thing.
*/
spin_unlock_irqrestore
(
&
tty_termios_lock
,
flags
);
if
(
tty
->
driver
->
set_termios
)
(
*
tty
->
driver
->
set_termios
)(
tty
,
&
old_termios
);
...
...
@@ -162,6 +152,7 @@ static void change_termios(struct tty_struct * tty, struct termios * new_termios
(
ld
->
set_termios
)(
tty
,
&
old_termios
);
tty_ldisc_deref
(
ld
);
}
up
(
&
tty
->
termios_sem
);
}
static
int
set_termios
(
struct
tty_struct
*
tty
,
void
__user
*
arg
,
int
opt
)
...
...
@@ -255,15 +246,14 @@ static int get_sgflags(struct tty_struct * tty)
static
int
get_sgttyb
(
struct
tty_struct
*
tty
,
struct
sgttyb
__user
*
sgttyb
)
{
struct
sgttyb
tmp
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
tty_termios_lock
,
flags
);
down
(
&
tty
->
termios_sem
);
tmp
.
sg_ispeed
=
0
;
tmp
.
sg_ospeed
=
0
;
tmp
.
sg_erase
=
tty
->
termios
->
c_cc
[
VERASE
];
tmp
.
sg_kill
=
tty
->
termios
->
c_cc
[
VKILL
];
tmp
.
sg_flags
=
get_sgflags
(
tty
);
spin_unlock_irqrestore
(
&
tty_termios_lock
,
flags
);
up
(
&
tty
->
termios_sem
);
return
copy_to_user
(
sgttyb
,
&
tmp
,
sizeof
(
tmp
))
?
-
EFAULT
:
0
;
}
...
...
@@ -299,7 +289,6 @@ static int set_sgttyb(struct tty_struct * tty, struct sgttyb __user * sgttyb)
int
retval
;
struct
sgttyb
tmp
;
struct
termios
termios
;
unsigned
long
flags
;
retval
=
tty_check_change
(
tty
);
if
(
retval
)
...
...
@@ -307,13 +296,13 @@ static int set_sgttyb(struct tty_struct * tty, struct sgttyb __user * sgttyb)
if
(
copy_from_user
(
&
tmp
,
sgttyb
,
sizeof
(
tmp
)))
return
-
EFAULT
;
spin_lock_irqsave
(
&
tty_termios_lock
,
flags
);
down
(
&
tty
->
termios_sem
);
termios
=
*
tty
->
termios
;
termios
.
c_cc
[
VERASE
]
=
tmp
.
sg_erase
;
termios
.
c_cc
[
VKILL
]
=
tmp
.
sg_kill
;
set_sgflags
(
&
termios
,
tmp
.
sg_flags
);
spin_unlock_irqrestore
(
&
tty_termios_lock
,
flags
);
up
(
&
tty
->
termios_sem
);
change_termios
(
tty
,
&
termios
);
return
0
;
}
...
...
@@ -405,7 +394,6 @@ int n_tty_ioctl(struct tty_struct * tty, struct file * file,
void
__user
*
p
=
(
void
__user
*
)
arg
;
int
retval
;
struct
tty_ldisc
*
ld
;
unsigned
long
flags
;
if
(
tty
->
driver
->
type
==
TTY_DRIVER_TYPE_PTY
&&
tty
->
driver
->
subtype
==
PTY_TYPE_MASTER
)
...
...
@@ -549,11 +537,11 @@ int n_tty_ioctl(struct tty_struct * tty, struct file * file,
case
TIOCSSOFTCAR
:
if
(
get_user
(
arg
,
(
unsigned
int
__user
*
)
arg
))
return
-
EFAULT
;
spin_lock_irqsave
(
&
tty_termios_lock
,
flags
);
down
(
&
tty
->
termios_sem
);
tty
->
termios
->
c_cflag
=
((
tty
->
termios
->
c_cflag
&
~
CLOCAL
)
|
(
arg
?
CLOCAL
:
0
));
spin_unlock_irqrestore
(
&
tty_termios_lock
,
flags
);
up
(
&
tty
->
termios_sem
);
return
0
;
default:
return
-
ENOIOCTLCMD
;
...
...
fs/locks.c
View file @
b9386771
...
...
@@ -1766,7 +1766,12 @@ void locks_remove_flock(struct file *filp)
while
((
fl
=
*
before
)
!=
NULL
)
{
if
(
fl
->
fl_file
==
filp
)
{
if
(
IS_FLOCK
(
fl
))
{
/*
* We might have a POSIX lock that was created at the same time
* the filp was closed for the last time. Just remove that too,
* regardless of ownership, since nobody can own it.
*/
if
(
IS_FLOCK
(
fl
)
||
IS_POSIX
(
fl
))
{
locks_delete_lock
(
before
);
continue
;
}
...
...
@@ -1774,9 +1779,7 @@ void locks_remove_flock(struct file *filp)
lease_modify
(
before
,
F_UNLCK
);
continue
;
}
/* FL_POSIX locks of this process have already been
* removed in filp_close->locks_remove_posix.
*/
/* What? */
BUG
();
}
before
=
&
fl
->
fl_next
;
...
...
fs/ntfs/ChangeLog
View file @
b9386771
...
...
@@ -21,7 +21,7 @@ ToDo/Notes:
- Enable the code for setting the NT4 compatibility flag when we start
making NTFS 1.2 specific modifications.
2.1.2
0
-WIP
2.1.2
1
-WIP
- Implement extent mft record deallocation
fs/ntfs/mft.c::ntfs_extent_mft_record_free().
...
...
@@ -44,7 +44,18 @@ ToDo/Notes:
fs/ntfs/attrib.[hc]::ntfs_attr_set() and switch
fs/ntfs/logfile.c::ntfs_empty_logfile() to using it.
- Remove unnecessary casts from LCN_* constants.
- Implement fs/ntfs/runlist.c::ntfs_rl_truncate().
- Implement fs/ntfs/runlist.c::ntfs_rl_truncate_nolock().
2.1.20 - Fix two stupid bugs introduced in 2.1.18 release.
- Fix stupid bug in fs/ntfs/attrib.c::ntfs_attr_reinit_search_ctx()
where we did not clear ctx->al_entry but it was still set due to
changes in ntfs_attr_lookup() and ntfs_external_attr_find() in
particular.
- Fix another stupid bug in fs/ntfs/attrib.c::ntfs_external_attr_find()
where we forgot to unmap the extent mft record when we had finished
enumerating an attribute which caused a bug check to trigger when the
VFS calls ->clear_inode.
2.1.19 - Many cleanups, improvements, and a minor bug fix.
...
...
fs/ntfs/Makefile
View file @
b9386771
...
...
@@ -6,7 +6,7 @@ ntfs-objs := aops.o attrib.o collate.o compress.o debug.o dir.o file.o \
index.o inode.o mft.o mst.o namei.o runlist.o super.o sysctl.o
\
unistr.o upcase.o
EXTRA_CFLAGS
=
-DNTFS_VERSION
=
\"
2.1.2
0
-WIP
\"
EXTRA_CFLAGS
=
-DNTFS_VERSION
=
\"
2.1.2
1
-WIP
\"
ifeq
($(CONFIG_NTFS_DEBUG),y)
EXTRA_CFLAGS
+=
-DDEBUG
...
...
fs/ntfs/attrib.c
View file @
b9386771
...
...
@@ -774,11 +774,13 @@ static int ntfs_external_attr_find(const ATTR_TYPE type,
* correctly yet as we do not know what @ctx->attr will be set to by
* the call to ntfs_attr_find() below.
*/
if
(
ni
!=
base_ni
)
unmap_extent_mft_record
(
ni
);
ctx
->
mrec
=
ctx
->
base_mrec
;
ctx
->
attr
=
(
ATTR_RECORD
*
)((
u8
*
)
ctx
->
mrec
+
le16_to_cpu
(
ctx
->
mrec
->
attrs_offset
));
ctx
->
is_first
=
TRUE
;
ctx
->
ntfs_ino
=
ctx
->
base_ntfs_ino
;
ctx
->
ntfs_ino
=
base_ni
;
ctx
->
base_ntfs_ino
=
NULL
;
ctx
->
base_mrec
=
NULL
;
ctx
->
base_attr
=
NULL
;
...
...
include/linux/tty.h
View file @
b9386771
...
...
@@ -244,6 +244,7 @@ struct tty_struct {
struct
tty_driver
*
driver
;
int
index
;
struct
tty_ldisc
ldisc
;
struct
semaphore
termios_sem
;
struct
termios
*
termios
,
*
termios_locked
;
char
name
[
64
];
int
pgrp
;
...
...
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