Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 311159
b: refs/heads/master
c: 201e4ac
h: refs/heads/master
i:
  311157: 8a09ffd
  311155: 5b02d97
  311151: 3222b2b
v: v3
  • Loading branch information
Anton Vorontsov authored and Greg Kroah-Hartman committed Jun 13, 2012
1 parent ddddd56 commit ba705a7
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 8 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: 33735a94afdfb39c550b952a40f77c60afdddfa5
refs/heads/master: 201e4aca5aa179e6c69a4dcd36a3562e56b8d670
2 changes: 2 additions & 0 deletions trunk/fs/pstore/ram.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ static ssize_t ramoops_pstore_read(u64 *id, enum pstore_type_id *type,
time->tv_sec = 0;
time->tv_nsec = 0;

/* Update old/shadowed buffer. */
persistent_ram_save_old(prz);
size = persistent_ram_old_size(prz);
*buf = kmalloc(size, GFP_KERNEL);
if (*buf == NULL)
Expand Down
15 changes: 8 additions & 7 deletions trunk/fs/pstore/ram_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,23 +250,24 @@ static void notrace persistent_ram_update(struct persistent_ram_zone *prz,
persistent_ram_update_ecc(prz, start, count);
}

static void __init
persistent_ram_save_old(struct persistent_ram_zone *prz)
void persistent_ram_save_old(struct persistent_ram_zone *prz)
{
struct persistent_ram_buffer *buffer = prz->buffer;
size_t size = buffer_size(prz);
size_t start = buffer_start(prz);
char *dest;

persistent_ram_ecc_old(prz);
if (!size)
return;

dest = kmalloc(size, GFP_KERNEL);
if (dest == NULL) {
if (!prz->old_log) {
persistent_ram_ecc_old(prz);
prz->old_log = kmalloc(size, GFP_KERNEL);
}
if (!prz->old_log) {
pr_err("persistent_ram: failed to allocate buffer\n");
return;
}

prz->old_log = dest;
prz->old_log_size = size;
memcpy(prz->old_log, &buffer->data[start], size - start);
memcpy(prz->old_log + size - start, &buffer->data[0], start);
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/pstore_ram.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ struct persistent_ram_zone *persistent_ram_init_ringbuffer(struct device *dev,
int persistent_ram_write(struct persistent_ram_zone *prz, const void *s,
unsigned int count);

void persistent_ram_save_old(struct persistent_ram_zone *prz);
size_t persistent_ram_old_size(struct persistent_ram_zone *prz);
void *persistent_ram_old(struct persistent_ram_zone *prz);
void persistent_ram_free_old(struct persistent_ram_zone *prz);
Expand Down

0 comments on commit ba705a7

Please sign in to comment.