lkml.org 
[lkml]   [2008]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC v11][PATCH 03/13] General infrastructure for checkpoint restart
    Oren Laadan wrote:

    > +/*
    > + * Helpers to write(read) from(to) kernel space to(from) the checkpoint
    > + * image file descriptor (similar to how a core-dump is performed).
    > + *
    > + * cr_kwrite() - write a kernel-space buffer to the checkpoint image
    > + * cr_kread() - read from the checkpoint image to a kernel-space buffer
    > + */
    > +
    > +int cr_kwrite(struct cr_ctx *ctx, void *addr, int count)
    > +{
    > + struct file *file = ctx->file;
    > + mm_segment_t fs;
    > + ssize_t nwrite;
    > + int nleft;
    > +
    > + fs = get_fs();
    > + set_fs(KERNEL_DS);
    > + for (nleft = count; nleft; nleft -= nwrite) {
    > + nwrite = file->f_op->write(file, addr, nleft, &file->f_pos);
    > + if (nwrite < 0) {
    > + if (nwrite == -EAGAIN)
    > + nwrite = 0;
    > + else

    set_fs(fs) here

    > + return nwrite;
    > + }
    > + addr += nwrite;
    > + }
    > + set_fs(fs);
    > + ctx->total += count;
    > + return 0;
    > +}
    > +
    > +int cr_kread(struct cr_ctx *ctx, void *addr, int count)
    > +{
    > + struct file *file = ctx->file;
    > + mm_segment_t fs;
    > + ssize_t nread;
    > + int nleft;
    > +
    > + fs = get_fs();
    > + set_fs(KERNEL_DS);
    > + for (nleft = count; nleft; nleft -= nread) {
    > + nread = file->f_op->read(file, addr, nleft, &file->f_pos);
    > + if (nread <= 0) {
    > + if (nread == -EAGAIN) {
    > + nread = 0;
    > + continue;
    > + } else if (nread == 0)
    > + nread = -EPIPE; /* unexecpted EOF */

    set_fs(fs) here as well

    > + return nread;
    > + }
    > + addr += nread;
    > + }
    > + set_fs(fs);
    > + ctx->total += count;
    > + return 0;
    > +}
    > +



    \
     
     \ /
      Last update: 2008-12-16 20:15    [W:4.282 / U:0.384 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site