Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 92983
b: refs/heads/master
c: eed7d27
h: refs/heads/master
i:
  92981: efbd031
  92979: 20ff14d
  92975: afec255
v: v3
  • Loading branch information
Sam Ravnborg committed Apr 25, 2008
1 parent 2062b14 commit acc1fc9
Show file tree
Hide file tree
Showing 19 changed files with 99 additions and 231 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dd0e101d630b0d7ed6c9e1ccf7af7fc91818330e
refs/heads/master: eed7d2798ce7b78547106d0c3557a88251b413d0
30 changes: 11 additions & 19 deletions trunk/Documentation/HOWTO
Original file line number Diff line number Diff line change
Expand Up @@ -249,11 +249,9 @@ process is as follows:
release a new -rc kernel every week.
- Process continues until the kernel is considered "ready", the
process should last around 6 weeks.
- Known regressions in each release are periodically posted to the
linux-kernel mailing list. The goal is to reduce the length of
that list to zero before declaring the kernel to be "ready," but, in
the real world, a small number of regressions often remain at
release time.
- A list of known regressions present in each -rc release is
tracked at the following URI:
http://kernelnewbies.org/known_regressions

It is worth mentioning what Andrew Morton wrote on the linux-kernel
mailing list about kernel releases:
Expand All @@ -263,7 +261,7 @@ mailing list about kernel releases:

2.6.x.y -stable kernel tree
---------------------------
Kernels with 4-part versions are -stable kernels. They contain
Kernels with 4 digit versions are -stable kernels. They contain
relatively small and critical fixes for security problems or significant
regressions discovered in a given 2.6.x kernel.

Expand All @@ -275,10 +273,7 @@ If no 2.6.x.y kernel is available, then the highest numbered 2.6.x
kernel is the current stable kernel.

2.6.x.y are maintained by the "stable" team <stable@kernel.org>, and are
released as needs dictate. The normal release period is approximately
two weeks, but it can be longer if there are no pressing problems. A
security-related problem, instead, can cause a release to happen almost
instantly.
released almost every other week.

The file Documentation/stable_kernel_rules.txt in the kernel tree
documents what kinds of changes are acceptable for the -stable tree, and
Expand All @@ -303,9 +298,7 @@ a while Andrew or the subsystem maintainer pushes it on to Linus for
inclusion in mainline.

It is heavily encouraged that all new patches get tested in the -mm tree
before they are sent to Linus for inclusion in the main kernel tree. Code
which does not make an appearance in -mm before the opening of the merge
window will prove hard to merge into the mainline.
before they are sent to Linus for inclusion in the main kernel tree.

These kernels are not appropriate for use on systems that are supposed
to be stable and they are more risky to run than any of the other
Expand Down Expand Up @@ -361,12 +354,11 @@ Here is a list of some of the different kernel trees available:
- SCSI, James Bottomley <James.Bottomley@SteelEye.com>
git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git

- x86, Ingo Molnar <mingo@elte.hu>
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git

quilt trees:
- USB, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de>
- USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de>
kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
- x86-64, partly i386, Andi Kleen <ak@suse.de>
ftp.firstfloor.org:/pub/ak/x86_64/quilt/

Other kernel trees can be found listed at http://git.kernel.org/ and in
the MAINTAINERS file.
Expand Down Expand Up @@ -400,8 +392,8 @@ If you want to be advised of the future bug reports, you can subscribe to the
bugme-new mailing list (only new bug reports are mailed here) or to the
bugme-janitor mailing list (every change in the bugzilla is mailed here)

http://lists.linux-foundation.org/mailman/listinfo/bugme-new
http://lists.linux-foundation.org/mailman/listinfo/bugme-janitors
http://lists.osdl.org/mailman/listinfo/bugme-new
http://lists.osdl.org/mailman/listinfo/bugme-janitors



Expand Down
14 changes: 5 additions & 9 deletions trunk/Documentation/filesystems/nfs-rdma.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
################################################################################

Author: NetApp and Open Grid Computing
Date: April 15, 2008
Date: February 25, 2008

Table of Contents
~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -197,16 +197,12 @@ NFS/RDMA Setup
- On the server system, configure the /etc/exports file and
start the NFS/RDMA server.

Exports entries with the following formats have been tested:
Exports entries with the following format have been tested:

/vol0 192.168.0.47(fsid=0,rw,async,insecure,no_root_squash)
/vol0 192.168.0.0/255.255.255.0(fsid=0,rw,async,insecure,no_root_squash)
/vol0 10.97.103.47(rw,async) 192.168.0.47(rw,async,insecure,no_root_squash)

The IP address(es) is(are) the client's IPoIB address for an InfiniBand HCA or the
cleint's iWARP address(es) for an RNIC.

NOTE: The "insecure" option must be used because the NFS/RDMA client does not
use a reserved port.
Here the first IP address is the client's Ethernet address and the second
IP address is the clients IPoIB address.

Each time a machine boots:

Expand Down
19 changes: 4 additions & 15 deletions trunk/Documentation/filesystems/seq_file.txt
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ stop() is the place to free it.
}

Finally, the show() function should format the object currently pointed to
by the iterator for output. The example module's show() function is:
by the iterator for output. It should return zero, or an error code if
something goes wrong. The example module's show() function is:

static int ct_seq_show(struct seq_file *s, void *v)
{
Expand All @@ -131,12 +132,6 @@ by the iterator for output. The example module's show() function is:
return 0;
}

If all is well, the show() function should return zero. A negative error
code in the usual manner indicates that something went wrong; it will be
passed back to user space. This function can also return SEQ_SKIP, which
causes the current item to be skipped; if the show() function has already
generated output before returning SEQ_SKIP, that output will be dropped.

We will look at seq_printf() in a moment. But first, the definition of the
seq_file iterator is finished by creating a seq_operations structure with
the four functions we have just defined:
Expand Down Expand Up @@ -187,18 +182,12 @@ The first two output a single character and a string, just like one would
expect. seq_escape() is like seq_puts(), except that any character in s
which is in the string esc will be represented in octal form in the output.

There is also a pair of functions for printing filenames:
There is also a function for printing filenames:

int seq_path(struct seq_file *m, struct path *path, char *esc);
int seq_path_root(struct seq_file *m, struct path *path,
struct path *root, char *esc)

Here, path indicates the file of interest, and esc is a set of characters
which should be escaped in the output. A call to seq_path() will output
the path relative to the current process's filesystem root. If a different
root is desired, it can be used with seq_path_root(). Note that, if it
turns out that path cannot be reached from root, the value of root will be
changed in seq_file_root() to a root which *does* work.
which should be escaped in the output.


Making it all work
Expand Down
39 changes: 20 additions & 19 deletions trunk/arch/x86/kernel/alternative.c
Original file line number Diff line number Diff line change
Expand Up @@ -511,30 +511,31 @@ void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
unsigned long flags;
char *vaddr;
int nr_pages = 2;
struct page *pages[2];
int i;

if (!core_kernel_text((unsigned long)addr)) {
pages[0] = vmalloc_to_page(addr);
pages[1] = vmalloc_to_page(addr + PAGE_SIZE);
BUG_ON(len > sizeof(long));
BUG_ON((((long)addr + len - 1) & ~(sizeof(long) - 1))
- ((long)addr & ~(sizeof(long) - 1)));
if (kernel_text_address((unsigned long)addr)) {
struct page *pages[2] = { virt_to_page(addr),
virt_to_page(addr + PAGE_SIZE) };
if (!pages[1])
nr_pages = 1;
vaddr = vmap(pages, nr_pages, VM_MAP, PAGE_KERNEL);
BUG_ON(!vaddr);
local_irq_save(flags);
memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len);
local_irq_restore(flags);
vunmap(vaddr);
} else {
pages[0] = virt_to_page(addr);
WARN_ON(!PageReserved(pages[0]));
pages[1] = virt_to_page(addr + PAGE_SIZE);
/*
* modules are in vmalloc'ed memory, always writable.
*/
local_irq_save(flags);
memcpy(addr, opcode, len);
local_irq_restore(flags);
}
BUG_ON(!pages[0]);
if (!pages[1])
nr_pages = 1;
vaddr = vmap(pages, nr_pages, VM_MAP, PAGE_KERNEL);
BUG_ON(!vaddr);
local_irq_save(flags);
memcpy(&vaddr[(unsigned long)addr & ~PAGE_MASK], opcode, len);
local_irq_restore(flags);
vunmap(vaddr);
sync_core();
/* Could also do a CLFLUSH here to speed up CPU recovery; but
that causes hangs on some VIA CPUs. */
for (i = 0; i < len; i++)
BUG_ON(((char *)addr)[i] != ((char *)opcode)[i]);
return addr;
}
7 changes: 4 additions & 3 deletions trunk/arch/x86/mm/init_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ static __init void *spp_getpage(void)
return ptr;
}

static void
static __init void
set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
{
pgd_t *pgd;
Expand Down Expand Up @@ -173,7 +173,7 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
new_pte = pfn_pte(phys >> PAGE_SHIFT, prot);

pte = pte_offset_kernel(pmd, vaddr);
if (!pte_none(*pte) && pte_val(new_pte) &&
if (!pte_none(*pte) &&
pte_val(*pte) != (pte_val(new_pte) & __supported_pte_mask))
pte_ERROR(*pte);
set_pte(pte, new_pte);
Expand Down Expand Up @@ -214,7 +214,8 @@ void __init cleanup_highmap(void)
}

/* NOTE: this is meant to be run only at boot */
void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
void __init
__set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
{
unsigned long address = __fix_to_virt(idx);

Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/lockd/svclock.c
Original file line number Diff line number Diff line change
Expand Up @@ -632,7 +632,7 @@ nlmsvc_update_deferred_block(struct nlm_block *block, struct file_lock *conf,
block->b_flags |= B_TIMED_OUT;
if (conf) {
if (block->b_fl)
__locks_copy_lock(block->b_fl, conf);
locks_copy_lock(block->b_fl, conf);
}
}

Expand Down
69 changes: 8 additions & 61 deletions trunk/fs/lockd/svcsubs.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
#include <linux/lockd/lockd.h>
#include <linux/lockd/share.h>
#include <linux/lockd/sm_inter.h>
#include <linux/module.h>
#include <linux/mount.h>

#define NLMDBG_FACILITY NLMDBG_SVCSUBS

Expand Down Expand Up @@ -196,12 +194,6 @@ nlm_traverse_locks(struct nlm_host *host, struct nlm_file *file,
return 0;
}

static int
nlmsvc_always_match(void *dummy1, struct nlm_host *dummy2)
{
return 1;
}

/*
* Inspect a single file
*/
Expand Down Expand Up @@ -238,8 +230,7 @@ nlm_file_inuse(struct nlm_file *file)
* Loop over all files in the file table.
*/
static int
nlm_traverse_files(void *data, nlm_host_match_fn_t match,
int (*is_failover_file)(void *data, struct nlm_file *file))
nlm_traverse_files(struct nlm_host *host, nlm_host_match_fn_t match)
{
struct hlist_node *pos, *next;
struct nlm_file *file;
Expand All @@ -248,14 +239,12 @@ nlm_traverse_files(void *data, nlm_host_match_fn_t match,
mutex_lock(&nlm_file_mutex);
for (i = 0; i < FILE_NRHASH; i++) {
hlist_for_each_entry_safe(file, pos, next, &nlm_files[i], f_list) {
if (is_failover_file && !is_failover_file(data, file))
continue;
file->f_count++;
mutex_unlock(&nlm_file_mutex);

/* Traverse locks, blocks and shares of this file
* and update file->f_locks count */
if (nlm_inspect_file(data, file, match))
if (nlm_inspect_file(host, file, match))
ret = 1;

mutex_lock(&nlm_file_mutex);
Expand Down Expand Up @@ -314,27 +303,21 @@ nlm_release_file(struct nlm_file *file)
* Used by nlmsvc_invalidate_all
*/
static int
nlmsvc_mark_host(void *data, struct nlm_host *dummy)
nlmsvc_mark_host(struct nlm_host *host, struct nlm_host *dummy)
{
struct nlm_host *host = data;

host->h_inuse = 1;
return 0;
}

static int
nlmsvc_same_host(void *data, struct nlm_host *other)
nlmsvc_same_host(struct nlm_host *host, struct nlm_host *other)
{
struct nlm_host *host = data;

return host == other;
}

static int
nlmsvc_is_client(void *data, struct nlm_host *dummy)
nlmsvc_is_client(struct nlm_host *host, struct nlm_host *dummy)
{
struct nlm_host *host = data;

if (host->h_server) {
/* we are destroying locks even though the client
* hasn't asked us too, so don't unmonitor the
Expand All @@ -354,7 +337,7 @@ void
nlmsvc_mark_resources(void)
{
dprintk("lockd: nlmsvc_mark_resources\n");
nlm_traverse_files(NULL, nlmsvc_mark_host, NULL);
nlm_traverse_files(NULL, nlmsvc_mark_host);
}

/*
Expand All @@ -365,7 +348,7 @@ nlmsvc_free_host_resources(struct nlm_host *host)
{
dprintk("lockd: nlmsvc_free_host_resources\n");

if (nlm_traverse_files(host, nlmsvc_same_host, NULL)) {
if (nlm_traverse_files(host, nlmsvc_same_host)) {
printk(KERN_WARNING
"lockd: couldn't remove all locks held by %s\n",
host->h_name);
Expand All @@ -385,41 +368,5 @@ nlmsvc_invalidate_all(void)
* turn, which is about as inefficient as it gets.
* Now we just do it once in nlm_traverse_files.
*/
nlm_traverse_files(NULL, nlmsvc_is_client, NULL);
}

static int
nlmsvc_match_sb(void *datap, struct nlm_file *file)
{
struct super_block *sb = datap;

return sb == file->f_file->f_path.mnt->mnt_sb;
}

int
nlmsvc_unlock_all_by_sb(struct super_block *sb)
{
int ret;

ret = nlm_traverse_files(sb, nlmsvc_always_match, nlmsvc_match_sb);
return ret ? -EIO : 0;
}
EXPORT_SYMBOL_GPL(nlmsvc_unlock_all_by_sb);

static int
nlmsvc_match_ip(void *datap, struct nlm_host *host)
{
__be32 *server_addr = datap;

return host->h_saddr.sin_addr.s_addr == *server_addr;
}

int
nlmsvc_unlock_all_by_ip(__be32 server_addr)
{
int ret;
ret = nlm_traverse_files(&server_addr, nlmsvc_match_ip, NULL);
return ret ? -EIO : 0;

nlm_traverse_files(NULL, nlmsvc_is_client);
}
EXPORT_SYMBOL_GPL(nlmsvc_unlock_all_by_ip);
Loading

0 comments on commit acc1fc9

Please sign in to comment.