Hi Anders Widell/Ramesh,

Can you please review this ticket by today , this has to go under 5.0.FC 
tag.

-AVM

>   osaf/libs/core/include/ncs_osprm.h      |   1 +
>   osaf/libs/core/leap/os_defs.c           |  13 ++++++++++---
>   osaf/services/saf/cpsv/cpnd/cpnd_proc.c |   1 +
>   osaf/services/saf/cpsv/cpnd/cpnd_res.c  |   2 ++
>   osaf/services/saf/glsv/glnd/glnd_shm.c  |   1 +
>   osaf/services/saf/mqsv/mqnd/mqnd_shm.c  |   1 +
>   6 files changed, 16 insertions(+), 3 deletions(-)
>
>
> Provided   ensured  disk space is allocated for  NCS_OS_POSIX_SHM_REQ_OPEN 
> request using  posix_fallocate()
> so that  application such as CPSV subsequent writes to bytes in the specified 
> range are guaranteed not to fail because of lack of disk space.
> Updated the Opensaf services according to new options based on requirements .
>
> diff --git a/osaf/libs/core/include/ncs_osprm.h 
> b/osaf/libs/core/include/ncs_osprm.h
> --- a/osaf/libs/core/include/ncs_osprm.h
> +++ b/osaf/libs/core/include/ncs_osprm.h
> @@ -564,6 +564,7 @@ uint32_t ncs_os_posix_mq(NCS_OS_POSIX_MQ
>               uint32_t i_flags;
>               uint32_t i_map_flags;
>               uint64_t i_size;
> +             bool ensures_space;
>               uint64_t i_offset;
>               void *o_addr;
>               int32_t o_fd;
> diff --git a/osaf/libs/core/leap/os_defs.c b/osaf/libs/core/leap/os_defs.c
> --- a/osaf/libs/core/leap/os_defs.c
> +++ b/osaf/libs/core/leap/os_defs.c
> @@ -795,9 +795,16 @@ uint32_t ncs_os_posix_shm(NCS_OS_POSIX_S
>               if (req->info.open.o_fd < 0) {
>                       return NCSCC_RC_FAILURE;
>               } else {
> -                     if (ftruncate(req->info.open.o_fd, (off_t) shm_size /* 
> off_t == long */ ) < 0) {
> -                             printf("ftruncate failed with errno value %d 
> \n", errno);
> -                             return NCSCC_RC_FAILURE;
> +                     if (req->info.open.ensures_space == true) {
> +                             if (posix_fallocate(req->info.open.o_fd, 0, 
> shm_size) == ENOSPC) {
> +                                     LOG_ER("posix_shm:posix_fallocate 
> failed() with not enough space left ENOSPC: %d \n", errno);
> +                                     return NCSCC_RC_FAILURE;
> +                             }
> +                     } else {
> +                             if (ftruncate(req->info.open.o_fd, (off_t) 
> shm_size /* off_t == long */ ) < 0) {
> +                                     printf("ftruncate failed with errno 
> value %d \n", errno);
> +                                     return NCSCC_RC_FAILURE;
> +                                }
>                       }
>   
>                       prot_flag = ncs_shm_prot_flags(req->info.open.i_flags);
> diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c 
> b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> --- a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> +++ b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c
> @@ -481,6 +481,7 @@ uint32_t cpnd_ckpt_replica_create(CPND_C
>       cp_node->replica_info.open.info.open.i_size =
>           sizeof(CPSV_CKPT_HDR) + cp_node->create_attrib.maxSections * 
> (sizeof(CPSV_SECT_HDR) +
>                                                                         
> cp_node->create_attrib.maxSectionSize);
> +     cp_node->replica_info.open.info.open.ensures_space = true;
>       cp_node->replica_info.open.info.open.i_offset = 0;
>       cp_node->replica_info.open.info.open.i_name = buf;
>       cp_node->replica_info.open.info.open.i_map_flags = MAP_SHARED;
> diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_res.c 
> b/osaf/services/saf/cpsv/cpnd/cpnd_res.c
> --- a/osaf/services/saf/cpsv/cpnd/cpnd_res.c
> +++ b/osaf/services/saf/cpsv/cpnd/cpnd_res.c
> @@ -160,6 +160,7 @@ uint32_t cpnd_ckpt_replica_create_res(NC
>       open_req->type = NCS_OS_POSIX_SHM_REQ_OPEN;
>       open_req->info.open.i_size =
>           sizeof(CPSV_CKPT_HDR) + (cp_info->maxSections * 
> ((sizeof(CPSV_SECT_HDR) + cp_info->maxSecSize)));
> +     open_req->info.open.ensures_space = true;
>       open_req->info.open.i_offset = 0;
>       open_req->info.open.i_name = buf;
>       open_req->info.open.i_map_flags = MAP_SHARED;
> @@ -344,6 +345,7 @@ void *cpnd_restart_shm_create(NCS_OS_POS
>       cpnd_open_req->info.open.i_size =
>           sizeof(CLIENT_HDR) + (MAX_CLIENTS * sizeof(CLIENT_INFO)) + 
> sizeof(CKPT_HDR) +
>           (MAX_CKPTS * sizeof(CKPT_INFO));
> +     cpnd_open_req->info.open.ensures_space = true;
>       cpnd_open_req->info.open.i_offset = 0;
>       cpnd_open_req->info.open.i_name = buffer;
>       cpnd_open_req->info.open.i_map_flags = MAP_SHARED;
> diff --git a/osaf/services/saf/glsv/glnd/glnd_shm.c 
> b/osaf/services/saf/glsv/glnd/glnd_shm.c
> --- a/osaf/services/saf/glsv/glnd/glnd_shm.c
> +++ b/osaf/services/saf/glsv/glnd/glnd_shm.c
> @@ -71,6 +71,7 @@ static uint32_t glnd_shm_open(GLND_CB *c
>   
>       glnd_open_req.type = NCS_OS_POSIX_SHM_REQ_OPEN;
>       glnd_open_req.info.open.i_size = shm_size;
> +     glnd_open_req.info.open.ensures_space = false;
>       glnd_open_req.info.open.i_offset = 0;
>       glnd_open_req.info.open.i_name = shm_name;
>       glnd_open_req.info.open.i_map_flags = MAP_SHARED;
> diff --git a/osaf/services/saf/mqsv/mqnd/mqnd_shm.c 
> b/osaf/services/saf/mqsv/mqnd/mqnd_shm.c
> --- a/osaf/services/saf/mqsv/mqnd/mqnd_shm.c
> +++ b/osaf/services/saf/mqsv/mqnd/mqnd_shm.c
> @@ -66,6 +66,7 @@ uint32_t mqnd_shm_create(MQND_CB *cb)
>       mqnd_open_req.type = NCS_OS_POSIX_SHM_REQ_OPEN;
>       mqnd_open_req.info.open.i_size =
>           sizeof(MQND_SHM_VERSION) + (sizeof(MQND_QUEUE_CKPT_INFO) * 
> cb->mqnd_shm.max_open_queues);
> +     mqnd_open_req.info.open.ensures_space = false;
>       mqnd_open_req.info.open.i_offset = 0;
>       mqnd_open_req.info.open.i_name = shm_name;
>       mqnd_open_req.info.open.i_map_flags = MAP_SHARED;
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
> _______________________________________________
> Opensaf-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to